find-команда для певних підкаталогів


17

Скажімо , у мене є каталог dirз трьома підкаталогами dir1.. dir3. А всередині у мене багато файлів та інших підкаталогів.

Я хотів би знайти файл усередині, скажімо, із *.cзакінченням, але я хотів би лише шукати у підкаталозі "dir / dir2" та всіх його підкаталогах. Як я можу це сформулювати?

Якщо припустити, що я в dir/мене:

find . -name "*.c"

шукати у всіх каталогах.

Як я обмежуюся лише dir2?

Відповіді:


11

Знайти прийме будь-який дійсний шлях так

find ./dir2 -name '*.c'

повинен зробити трюк

Якщо dirкаталог є, /home/user/dirви можете дати знайти повний шлях

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

18

Ви також можете використовувати -pathпараметр findзамість -name:

find . -path "dir2/*.c"

Це може дозволити вам знайти файли, dir2навіть якщо dir2вони не були прямим підкаталогом, EG:

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

4

Ви можете зробити find dir2 -name '*.c'

Ви також можете зробити (cd dir2; find -name '*.c')

Якщо ви хочете подивитися на dir1 та dir3, але не на dir2, можете зробити це find {dir1,dir3} -name '*.c'


3
В останній команді дужки не потрібні. find dir1 dir3 -name \*.cпрацює просто чудово.
KeithB

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.