find-command untuk subdirektori tertentu

17

Katakanlah saya memiliki direktori dirdengan tiga subdirektori dir1.. dir3. Dan di dalamnya saya punya banyak file dan subdirektori lainnya.

Saya ingin mencari file di dalamnya, katakan dengan *.cakhiran, tetapi saya hanya ingin mencari di subdirektori "dir / dir2" dan semua subdirektori. Bagaimana saya bisa merumuskannya?

Dengan asumsi saya masuk dir/saya punya:

find . -name "*.c"

untuk mencari di semua direktori.

Bagaimana saya membatasi hanya dir2?

scrrr
sumber

Jawaban:

11

Temukan akan menerima jalur yang valid demikian

find ./dir2 -name '*.c'

harus melakukan trik

Jika dirdirektori itu /home/user/dirAnda bisa memberikan menemukan path lengkap

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

sumber
17

Anda juga dapat menggunakan -pathparameter finddi tempat -name:

find . -path "dir2/*.c"

Ini dapat memungkinkan Anda menemukan file dir2bahkan jika dir2bukan subdirektori langsung, misalnya:

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

Anda dapat melakukan find dir2 -name '*.c'

Anda juga bisa melakukannya (cd dir2; find -name '*.c')

Jika Anda ingin melihat dir1 dan dir3 tetapi tidak dir2, Anda bisa melakukannya find {dir1,dir3} -name '*.c'

Shawn J. Goff
sumber
3
Pada perintah terakhir, kawat gigi tidak diperlukan. find dir1 dir3 -name \*.cberfungsi dengan baik.
KeithB
3

Dengan asumsi Anda masuk dir

find dir2 -name '*.c'

tentu saja jawaban Iain juga benar

xenoterracide
sumber