find-command dla niektórych podkatalogów


17

Powiedzmy, że mam katalog dirz trzech podkatalogów dir1.. dir3. A w środku mam wiele plików i innych podkatalogów.

Chciałbym wyszukać plik wewnątrz, powiedzmy z *.czakończeniem, ale chciałbym tylko wyszukiwać w podkatalogu „dir / dir2” i wszystkich jego podkatalogach. Jak mogę to sformułować?

Zakładając, że jestem w dir/środku, mam:

find . -name "*.c"

szukać we wszystkich katalogach.

Jak mogę ograniczyć się tylko do dir2?

Odpowiedzi:


11

Znajdź zaakceptuje każdą prawidłową ścieżkę

find ./dir2 -name '*.c'

powinien załatwić sprawę

Jeśli dirkatalog jest, /home/user/dirmożesz podać pełną ścieżkę

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

18

Możesz również użyć -pathparametru findzamiast -name:

find . -path "dir2/*.c"

To może pozwolić ci znaleźć pliki, dir2nawet jeśli dir2nie są to bezpośrednie podkatalogi, np .:

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

4

Możesz to zrobić find dir2 -name '*.c'

Ty też możesz to zrobić (cd dir2; find -name '*.c')

Jeśli chcesz spojrzeć na katalog 1 i katalog 3, ale nie katalog 2, możesz to zrobić find {dir1,dir3} -name '*.c'


3
W ostatnim poleceniu nawiasy klamrowe nie są potrzebne. find dir1 dir3 -name \*.cdziała dobrze.
KeithB,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.