find-command pour certains sous-répertoires


17

Disons que j'ai un répertoire diravec trois sous - répertoires dir1.. dir3. Et à l'intérieur, j'ai de nombreux fichiers et autres sous-répertoires.

Je voudrais rechercher un fichier à l'intérieur, disons avec une *.cfin, mais je voudrais seulement rechercher dans le sous-répertoire "dir / dir2" et tous ses sous-répertoires. Comment puis-je formuler cela?

En supposant que je suis dedans, j'ai dir/:

find . -name "*.c"

pour rechercher dans tous les répertoires.

Comment puis-je me limiter à seulement dir2?

Réponses:


11

Find acceptera tout chemin valide afin

find ./dir2 -name '*.c'

devrait faire l'affaire

Si le dirrépertoire est, /home/user/dirvous pouvez donner trouver le chemin complet

find /home/user/dir/dir2 -name '*.c'

18

Vous pouvez également utiliser le -pathparamètre de findà la place de -name:

find . -path "dir2/*.c"

Cela pourrait vous permettre de trouver des fichiers dir2même s'ils dir2n'étaient pas un sous-répertoire direct, par exemple:

# find . -path "*/dir2/*.c"
./dir_a/dir2/file.c
./dir_b/dir2/file.c

4

Tu peux faire find dir2 -name '*.c'

Vous pourriez aussi faire (cd dir2; find -name '*.c')

Si vous vouliez regarder dir1 et dir3 mais pas dir2, vous pourriez faire find {dir1,dir3} -name '*.c'


3
Dans la dernière commande, les accolades ne sont pas nécessaires. find dir1 dir3 -name \*.cfonctionne très bien.
KeithB

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.