-prune
Birincil söyler find
bir dizinin altına recurse değil.
find -L -path ~/.wine/dosdevices -prune -o -type f -name 'My Favorite Movie.*' -print
Durumunuzda kullanmak istiyorsanız -lname
, -L
seçeneği kullanamazsınız , çünkü -L
çoğu tahmin, dahil olmak üzere bağlantının hedefi üzerinde hareket eder -lname
. Bu durumda önerim, hem ana dizininizi hem de sabit disk kökünü aramanızın kökleri olarak kullanmak olacaktır.
find ~ /mnt/hdd -xtype f -name 'My Favorite Movie.*'
find ~ -type l …
Sembolik bağlantıların bir listesini toplamak ve bunları ek kökler olarak kullanmak için koşabilirsiniz .
( IFS=$'\n'; set -f;
find ~ $(find ~ -type l -lname '/mnt/hdd/*') \
-xtype f -name 'My Favorite Movie.*' )
Gerçekten sembolik bağlantılar altında tekrarlamak istiyorsanız, belirli sembolik bağlantıları ad yerine hedefe göre hariç tutabilirsiniz. Ancak bu şekilde bir desen veya alt ağaç değil, yalnızca sınırlı bir listeyi hariç tutabilirsiniz.
find -L \( -samefile /exclude/this -o -samefile ~/and/that \) -prune -o \
-type f -name 'My Favorite Movie.*' -print
! -writable
(Yazma izniniz olmayan dosyalar) gibi diğer ölçütleri kullanabilirsiniz , ancak GNU bulmanın yalnızca hedef metinleri belirli bir ifadeyle eşleşmesi durumunda sembolik bağlantılar altında geri çekmenin bir yolu olduğunu düşünmüyorum.
find
Yeterli sembolik bağlantıları hariç tutmamak dışında neredeyse istediğinizi yapan bir komut oluşturabilir , sorguyu bir Perl komut dosyasına dönüştürmek için find2perl komutunu çalıştırabilir ve Perl komut dosyasını biraz değiştirebilirsiniz. Bununla birlikte, find2perl'in tanımadığı birçok GNU anahtarı vardır.
-prune
sadece aradığım şey. Ben fark ettikfind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
listeleri tüm sembolik ı takip etmek istemiyorum; Şimdi bu sorgu budamak için kullanmak için bir yol bulmaya çalışıyorum.