- çıplak çözümler -
findBulunan 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, findtamamen 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.3ait GNU find). Bunu kullanmak biraz daha zor, çünkü findhemen çıkış yapıyor - bu yüzden -quitkomutun sonuna yerleştirilmelidir:
find . -type d -name somename -exec ... -quit
Bunun beklendiği gibi çalışması için, -execgeri dönüşlerin doğru olduğunu garanti etmek gerekir (başka bir deyişle, sıfır durum). Çıkış durumunun -execgöz ardı edilmesini istiyorsanız, -quither 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, -oseçenek bağlantıyı "OR" olarak değiştirir.
Bir zor unsuru -oolmasıdır findcan "optimize" Emrin ve çalışmaz -execsadece 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 .