Commandes UNIX
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Commandes UNIX



  1. #1
    invite1a299084

    Commandes UNIX


    ------

    Bonjour,

    Je suis entrain de faire des exercices sur les commandes UNIX.

    Je suis dans un répertoire toto, je dois trouver les fichiers finissant par .c ou .h et les déplacer dans un fichier titi (se trouvant dans toto).

    Pour trouver les fichiers finissant par .c, je fais: find toto "*.c"

    Pour les déplacer, je fais un "move" mais disons que je ne vois pas comment mettre tout ça dans une seule ligne de commande.

    Je vous remercie d'avance.

    -----

  2. #2
    Jack
    Modérateur

    Re : Commandes UNIX

    la commande mv permet d'indiquer une source (tes fichiers) et une cible (ton répertoire)

    http://pwet.fr/man/linux/commandes/mv

  3. #3
    invitea9bf1fa1

    Re : Commandes UNIX

    Le fameux "pipe" te sera bien utile : http://fr.wikipedia.org/wiki/Tube_%28shell%29

  4. #4
    inviteb9f49292

    Re : Commandes UNIX

    pour la recherche, il me semble qu'il manque l'option "-name", de plus comme tu uilises le "*", tu peux également profiter du "[]" pour spécifier une liste de caractères , ainsi "*.[ch]" est l'expression pour "tous les fichiers avec l'extension .c ou .h".

    Evidemment le "pipe" est essentiel pour ce genre de bidouille, mais "xargs" peut-être rudement pratique également

  5. A voir en vidéo sur Futura
  6. #5
    albanxiii
    Modérateur

    Re : Commandes UNIX

    Bonjour,

    Pas besoin de pipe, la commande find permet de tout faire (cf. man find, et regarder l'option -exec).

    @+
    Not only is it not right, it's not even wrong!

  7. #6
    inviteb9f49292

    Re : Commandes UNIX

    Pas besoin de pipe, la commande find permet de tout faire (cf. man find, et regarder l'option -exec).
    J'utilise quotidienement "find" pipé sur un xargs depuis... et tu viens de me rappeler l'option "exec" dont je ne me suis probablement jamais servi, sauf peut-être le jour où j'ai découvert son existence en lisant le man...

    Blague à part, je pense néanmoins que pour l'apprentissage il est plus opportun de travailler avec les "pipe" et autres redirections, car peu de commande offre des options du type "exec", or la logique de la redirection est générale aux shells UNIX, cela permet de toucher du doigt la puissance que ces outils apportent et de vite comprendre pourquoi les barbus préfèrent souvent une ligne de commande à un cliquo-drôme...

  8. #7
    invite9dc7b526

    Re : Commandes UNIX

    moi c'est pire, je ne connaissais même pas find. J'aurais fait du "ls | grep" pour trouver les fichiers...

  9. #8
    invitea9bf1fa1

    Re : Commandes UNIX

    c'est ça qui est bien avec les commandes Unix, il y a plusieurs façons de parvenir à son but, de la plus basique à la plus élégante

  10. #9
    invite1a299084

    Re : Commandes UNIX

    Merci pour vos réponses.

    Cependant, je n'y arrive pas...

    find -name "*.c" < mv XXX dossier

    Je récupère le flux en sortie, c'est à dire les fichiers finissant par .c et je le mets en entrée mais je ne vois pas quoi mettre à la place de XXX.

    Je n'ai pas trop saisi comment marché l'option -exec de find.

  11. #10
    invite62eea43d

    Re : Commandes UNIX

    Bonjour ,

    Tu veux déplacer des fichiers *.c et *.h :

    Code:
    mv *.[ch]   repertoire_destination
    Avec find .

    Code:
    find . -name "*.[ch]" -exec mv {} /repdestination \;
    quand le nombre de fichier dépasse le nombre d'argument autorisés pour la commande mv on a un " Argument list too long" dans ce cas find fera l'affaire.

  12. #11
    invite1a299084

    Re : Commandes UNIX

    Merci beaucoup. Et si le fichier est un .txt, ça ne marche pas en mettant *.[txt] ?

  13. #12
    Jack
    Modérateur

    Re : Commandes UNIX

    non, essaie directement avec *.txt

  14. #13
    inviteb9f49292

    Re : Commandes UNIX

    find -name "*.c" < mv XXX dossier
    "<" c'est pour utiliser un fichier à la place du "stdin" du programme. Par exemple, si tu peux trier les lignes d'un fichier par ordre alphabétique, tu peux faire
    Code:
    cat FICHIER | sort
    ou
    Code:
    sort < FICHIER

  15. #14
    invite62eea43d

    Re : Commandes UNIX

    Citation Envoyé par Micki2a Voir le message
    Merci beaucoup. Et si le fichier est un .txt, ça ne marche pas en mettant *.[txt] ?
    ça ne marche pas parce que [ch] veux dire que les caractères admis sont c et h .

    Bon la tu me cherches et ça va faire mal ...

    find . -regex '.+\.\([ch]\|\(txt\)\)' -type f -exec mv '{}' /repdestination

    Le charabia veux dire je cherche un caractère quelconque symbolisé par . répété x fois symbolisé par le + le tout suivi d'un point \. ( de l'extension ) suivi de [c ou h ] OU txt symbolisé par |(txt) .

Discussions similaires

  1. Prbl installation subset Java sur mon Mac (peut-être besoins de commandes UNIX)
    Par inviteed5cf7ab dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 06/03/2010, 01h10
  2. unix
    Par invite1d93df33 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 18/09/2008, 22h12
  3. unix
    Par invited9d78a37 dans le forum Logiciel - Software - Open Source
    Réponses: 33
    Dernier message: 09/02/2007, 11h20
  4. unix dos
    Par invitea121f130 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 06/01/2007, 23h53
  5. commandes unix
    Par invite48d4167a dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 20/07/2004, 09h00