Forum Programmation.shell find -o bizzare

Posté par  .
Étiquettes : aucune
0
1
août
2006
Bonjour,

Il y a quelque chose que je ne comprend pas avec find:
si je fais
find ./ -name '*.cpp' -or -name '*.h' -print
Il ne va m'afficher que les .h
inversement,
find ./ -name '*.h' -or -name '*.cpp' -print
c'est les .cpp qui sortent...
Pourquoi find ne marche pas?
Quelqu'un peux m'aider la-dessus?
Merci,
Florent
  • # c'est un problème de groupage

    Posté par  . Évalué à 9.

    le -print est attaché à la deuxième partie du -or, comme on peut le voir en essayant ceci : find . -name '*.cpp' -print -or -name '*.h' -print

    Plus simplement, on peut utiliser des parenthèses : find . \( -name '*.cpp' -or -name '*.h' \) -print
    • [^] # Re: c'est un problème de groupage

      Posté par  . Évalué à 5.

      On peut aussi utiliser l'option trop souvent ignorée -regex :

      find . -regex '.*\(h\|cpp\)$' -print

      Ca fait un peu beaucoup pour un cas aussi simple, mais c'est parfois pratique.
  • # syntaxe plus simple

    Posté par  . Évalué à 1.

    Moi j'utilise d'habitude find -name \*.c -o -name \*.cpp, tout simplement. Pas besoin de "-print" ni de répertoire à préciser (et sinon "." suffit, le "/" en plus ne sert à rien).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.