Belirli alt dizinler için find-komutu


17

Diyelim ben bir dizin var ki dirüç alt dizinleri ile dir1.. dir3. Ve içinde birçok dosya ve diğer alt dizinlerim var.

İçinde bir dosya aramak istiyorum, bir *.csonla söyleyin , ancak sadece "dir / dir2" alt dizininde ve tüm alt dizinlerinde arama yapmak istiyorum. Bunu nasıl formüle edebilirim?

İçinde olduğumu varsayarak dir/:

find . -name "*.c"

tüm dizinlerde arama yapmak için.

Yalnızca nasıl kısıtlayabilirim dir2?

Yanıtlar:


11

Bul geçerli herhangi bir yolu kabul eder,

find ./dir2 -name '*.c'

hile yapmalı

Eğer dirdizin ise /home/user/dirtam yolu bulmak verebilir

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

18

Yerine -pathparametresini de kullanabilirsiniz :find-name

find . -path "dir2/*.c"

Bu, doğrudan bir alt dizin olmasa dir2bile dosyaları bulmanıza izin verebilir dir2, EG:

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

4

Yapabilirsin find dir2 -name '*.c'

Ayrıca yapabilirsin (cd dir2; find -name '*.c')

Dir1 ve dir3'e bakmak, ancak dir2'ye bakmak istemiyorsanız, find {dir1,dir3} -name '*.c'


3
Son komutta, parantezlere gerek yoktur. find dir1 dir3 -name \*.cgayet iyi çalışıyor.
KeithB

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.