-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
उन सभी सिम्बलिंक को सूचीबद्ध करता है जिनका मैं पालन नहीं करना चाहता; अब मैं उस क्वेरी का उपयोग करने का एक तरीका ढूंढने की कोशिश कर रहा हूं।