comando di ricerca per alcune sottodirectory


17

Diciamo che ho una directory dircon tre sottodirectory dir1.. dir3. E dentro ho molti file e altre sottodirectory.

Vorrei cercare un file all'interno, diciamo con un *.cfinale, ma vorrei solo cercare nella sottodirectory "dir / dir2" e in tutte le sue sottodirectory. Come posso formularlo?

Supponendo che io sia in dir/ho:

find . -name "*.c"

per cercare in tutte le directory.

Come posso limitarmi a solo dir2?

Risposte:


11

Trova accetterà qualsiasi percorso valido così

find ./dir2 -name '*.c'

dovrebbe fare il trucco

Se la dirdirectory è, /home/user/dirpotresti trovare il percorso completo

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

17

È inoltre possibile utilizzare il -pathparametro findal posto di -name:

find . -path "dir2/*.c"

Ciò potrebbe consentire di trovare i file dir2anche se dir2non erano una sottodirectory diretta, ad esempio:

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

4

Tu puoi fare find dir2 -name '*.c'

Potresti anche fare (cd dir2; find -name '*.c')

Se volessi guardare dir1 e dir3 ma non dir2, potresti farlo find {dir1,dir3} -name '*.c'


3
Nell'ultimo comando, le parentesi graffe non sono necessarie. find dir1 dir3 -name \*.cfunziona benissimo.
KeithB,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.