-pruneप्राथमिक बताता है findएक निर्देशिका के अंतर्गत recurse करने के लिए नहीं।
find -L -path ~/.wine/dosdevices -prune -o -type f -name 'My Favorite Movie.*' -print
यदि आप -lnameअपनी स्थिति में उपयोग करना चाहते हैं, तो आप -Lविकल्प का उपयोग नहीं कर सकते , क्योंकि -Lलिंक के लक्ष्य पर कार्य करने के लिए सबसे अधिक विधेय का कारण बनता है -lname। उस मामले में मेरी सिफारिश आपकी खोज के मूल के रूप में आपके होम डायरेक्टरी और हार्ड डिस्क रूट दोनों का उपयोग करने के लिए होगी।
find ~ /mnt/hdd -xtype f -name 'My Favorite Movie.*'
आप find ~ -type l …प्रतीकात्मक लिंक की एक सूची इकट्ठा करने और उन्हें अतिरिक्त जड़ों के रूप में उपयोग करने के लिए दौड़ सकते हैं।
( IFS=$'\n'; set -f;
find ~ $(find ~ -type l -lname '/mnt/hdd/*') \
-xtype f -name 'My Favorite Movie.*' )
यदि आप वास्तव में प्रतीकात्मक लिंक के तहत पुनरावृत्ति करना चाहते हैं, तो आप नाम के बजाय लक्ष्य द्वारा विशिष्ट प्रतीकात्मक लिंक को बाहर कर सकते हैं। हालाँकि आप केवल एक सीमित सूची को बाहर कर सकते हैं, न कि इस तरह से एक पैटर्न या सबट्री।
find -L \( -samefile /exclude/this -o -samefile ~/and/that \) -prune -o \
-type f -name 'My Favorite Movie.*' -print
आप अन्य मानदंडों का उपयोग कर सकते हैं जैसे ! -writable(वे फाइलें जिनके बारे में आपको अनुमति नहीं है), लेकिन मुझे नहीं लगता कि जीएनयू को केवल प्रतीकात्मक लिंक के तहत पुनरावृत्ति करने का एक तरीका है अगर उनका लक्ष्य पाठ एक निश्चित अभिव्यक्ति से मेल खाता है।
आप एक ऐसी findकमांड का निर्माण कर सकते हैं जो आपको पर्याप्त प्रतीकात्मक लिंक को छोड़कर नहीं के अलावा लगभग क्या चाहिए, क्वेरी को एक पर्ल स्क्रिप्ट में बदलने के लिए find2perl चलाती है, और पर्ल स्क्रिप्ट को थोड़ा मोड़ देती है। GNU के कई स्विच हैं जो पाते हैं कि find2perl पहचान नहीं पाता है, हालाँकि।
-pruneबस जिस तरह की चीज मैं देख रहा था। मैंने पाया है किfind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype dउन सभी सिम्बलिंक को सूचीबद्ध करता है जिनका मैं पालन नहीं करना चाहता; अब मैं उस क्वेरी का उपयोग करने का एक तरीका ढूंढने की कोशिश कर रहा हूं।