किसी विशेष फ़ाइल के लिए बनाए गए सभी प्रतीकात्मक लिंक को कैसे ढूंढें और सूचीबद्ध करें?


52

मैंने किसी विशेष फ़ाइल या निर्देशिका के लिए विभिन्न रास्तों पर कई प्रतीकात्मक लिंक बनाए थे। मैं निर्मित प्रतीकात्मक लिंक पथों (स्थान) की पूरी सूची चाहता हूं।

उदाहरण:

मैंने ~/Picturesकई निर्देशिकाओं पर निर्देशिका के लिए प्रतीकात्मक लिंक बनाए । मैं उस ~/Picturesनिर्देशिका की सभी सहानुभूति कैसे सूचीबद्ध करूं ?

क्या यह संभव है? यदि हाँ, तो कैसे?


आपको संपूर्ण खोज करने की आवश्यकता है, हार्ड-लिंक के लिए कोई गणना संग्रहीत नहीं है। खोज का उपयोग करके उत्तर देखें।
ctrl-alt-delor

जवाबों:


42

यहाँ एक उदाहरण है:

find -L /dir/to/start -xtype l -samefile ~/Pictures

या, शायद बेहतर:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

जैसे कुछ त्रुटियों से छुटकारा पाने के Permission denied, Too many levels of symbolic linksया File system loop detectedजो findउन्हें फेंकता है जब सही अनुमतियाँ या अन्य स्थितियों जरूरत नहीं है।

  • -L - प्रतीकात्मक लिंक का पालन करें।

  • -xtype l - फाइल प्रतीकात्मक लिंक है

  • -samefile name- फ़ाइल के रूप में एक ही इनोड को संदर्भित करता है name। जब -Lप्रभाव में हो, तो इसमें प्रतीकात्मक लिंक शामिल हो सकते हैं।

टिप्पणियाँ:

  • -xtype lअंक 1 में लोअरकेस एल का उपयोग करें ।
  • MacOS / डार्विन पर, -xtypeहै -type

क्या प्रतीकात्मक लिंक को खोजने के लिए कमांड को संशोधित किया जा सकता है जिसमें पथ शामिल है? प्रणाली है कि लिंक कर सकते हैं भर में जैसे फ़ाइल ~ / चित्र / ए, ~ / चित्र / ए / बी / सी, या किसी की उपनिर्देशिका में फ़ाइल ~ / चित्र> करने के लिए
snowbound

7

बहुत सरल, उपयोग विकल्प -lname:

find / -lname /path/to/original/dir

से man find:

-lname pattern
       File is a symbolic link whose contents match shell pattern pattern.  The
       metacharacters do not treat `/' or `.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

नोट : याद रखें कि प्रतीकात्मक लिंक कहीं भी हो सकते हैं, जिसमें एक दूरस्थ प्रणाली (यदि आप फ़ाइलें साझा कर रहे हैं) शामिल हैं, तो आप सभी का पता लगाने में सक्षम नहीं हो सकते हैं।


यह भी ध्यान दें, अगर सिम्लिंक एक सापेक्ष पथ है, ../dirतो यह पूर्ण नहीं मिलेगा, /path/to/original/dirइसके बजाय आप एक पैटर्न का उपयोग कर सकते हैं और झूठी सकारात्मकता को -lname \*dir
जेसन एस

2

इसे इस्तेमाल करे :

ls -i ~/

277566 Pictures

find . -follow -inum 277566(समान इनोड संख्या के साथ निर्देशिका खोजें )

यह अपने सभी प्रतीकात्मक लिंक पथों को प्रदर्शित करेगा।


4
यह कठिन लिंक मिलेगा, प्रतीकात्मक लिंक नहीं। हार्ड लिंक इनोड संख्या साझा करते हैं। प्रतीकात्मक लिंक में अलग-अलग इनोड नंबर होते हैं। एक प्रतीकात्मक लिंक के इनोड में एक ब्लॉक सूची के बजाय एक पथ होता है।
हल्दी

प्रश्न में हार्ड या सॉफ्ट प्रतीकात्मक लिंक का उल्लेख नहीं किया गया था
nux

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