- çıplak çözümler -
find
Bulunan direktörün içeriğini atlamak, ancak diğer dizinlerde aramaya devam etmek istiyorsanız , -prune
@ işaretin önerildiği şekilde kullanın . Tam komut sonra gibi görünmeli
find . -type d -name somename -prune -exec ...
İstersen Öte yandan, find
tamamen için arama durdurmak ve ilk eşleşen dizini bulduktan sonra, o zaman ne arıyorsun olduğunu -quit
(versiyonundan beri mevcut 4.2.3
ait GNU find
). Bunu kullanmak biraz daha zor, çünkü find
hemen çıkış yapıyor - bu yüzden -quit
komutun sonuna yerleştirilmelidir:
find . -type d -name somename -exec ... -quit
Bunun beklendiği gibi çalışması için, -exec
geri dönüşlerin doğru olduğunu garanti etmek gerekir (başka bir deyişle, sıfır durum). Çıkış durumunun -exec
göz ardı edilmesini istiyorsanız, -quit
her zaman işe yaraması için küçük bir numaraya ihtiyacınız var:
find . -type d -name somename \( -exec ... -o -true \) -quit
veya
find . -type d -name somename \( -exec ... -o -quit \)
veya
find . -type d -name somename \( -exec ... , -quit \) # a comma before -quit
- bazı açıklamalar -
Nasıl find
çalıştığıyla ilgili en önemli şey , tüm eylemlerin ("testler") , soldan sağa doğru yorumlanan mantıksal öngörüler olarak ele alınmasıdır. Bu nedenle, son eylem (örneğin -quit
) yalnızca önceki bölümün tamamı yanlış dönmediyse gerçekleştirilecektir . Varsayılan olarak, tüm testler mantıksal "AND" ile birleştirilir, -o
seçenek bağlantıyı "OR" olarak değiştirir.
Bir zor unsuru -o
olmasıdır find
can "optimize" Emrin ve çalışmaz -exec
sadece yazarsanız parçası
find . -type d -name somename -exec ... -o -quit
Bununla başa çıkmak için, find
"OR" ile bağlanan tüm yüklemleri parantez içine alarak değerlendirmeye zorlayabilirsiniz .