सहानुभूति लक्ष्य द्वारा फ़ाइलों की सूची


23

मैं प्रतीकात्मक लिंक लक्ष्य नाम से फ़िल्टर करके फ़ाइलों की सूची कैसे प्राप्त करूं (और फिर उस सूची के साथ कुछ कर सकता हूं) , और सिम्लिंक नाम नहीं? निम्न सूची से उदाहरण के लिए मैं केवल पहली चार फाइलों में दिलचस्पी रखता हूं (लक्ष्य में शामिल है bar):

foo ->  /tmp/bar
bar ->  /home/me/bartoo
baz ->  /home/me/public/barthree
zoo ->  /usr/share/bar
moo ->  /tmp/foo
roc ->  /tmp/roc

जवाबों:


31

आप सभी प्रकार की सिमलिंक की फ़ाइलों को लाने के लिए खोज का उपयोग कर सकते हैं और -ilnameलिंक गंतव्य के नाम से खोज करने के लिए विकल्प जोड़ सकते हैं। यह ठीक वैसे ही काम करता है -inameलेकिन लिंक नाम के बजाय लिंक लक्ष्य नाम के लिए।

find -type l -ilname "*bar*"

यह अभी भी लिंक का नाम प्रिंट करेगा, लक्ष्य नहीं। यदि आप लक्ष्य के नाम प्रिंट करना चाहते हैं, तो यह प्रयास करें:

find -type l -ilname "*bar*" -printf "%l\n"

या एक पूर्ण lsशैली आउटपुट प्राप्त करें

find -type l -ilname "*bar*" -ls

" सूची के साथ कुछ करें " से आपका क्या मतलब है यह स्पष्ट नहीं है, लेकिन यदि आप लिंक फ़ाइलों पर काम करना चाहते हैं, तो आप -execखोजने के लिए तर्क का उपयोग कर सकते हैं:

find -type l -ilname "*bar*" -exec touch {} \;

लेकिन अगर आपको लिंक लक्ष्य पर काम करने की आवश्यकता है, तो आपको -printfलक्ष्य मान प्राप्त करने के लिए उपयोग करने की आवश्यकता होगी और फिर xargsकाम करने के लिए स्वयं या फिर कुछ लूप। आप ऐसा कुछ कर सकते हैं:

find -type l -printf "%l\n" | grep bar | xargs touch

... जो यह भी दर्शाता है कि आपका नाम मिलान करने के grepबजाय कैसे उपयोग किया जाए find -ilname, हालांकि आप ऐसा कर सकते हैं।


धन्यवाद कालेब! आपने कुछ तात्कालिक चैनल मामलों को कवर करने के साथ-साथ मेरे तत्काल प्रश्न का पूरी तरह से उत्तर दिया, जिसका मैं निश्चित रूप से उपयोग करूंगा।
मैट विल्की

1
किसी भी विचार क्यों यह find /dev/disk/ -type l -ilname "*sde*"काम नहीं करता है?
कुंभ राशि

जीएनयू खोजने की आवश्यकता है।
सेप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.