किसी दिए गए निर्देशिका के अंदर किसी भी फ़ाइल / निर्देशिका की ओर इशारा करते हुए सभी प्रतीकात्मक लिंक कैसे प्राप्त करें


15

इस प्रश्न पर या इस एक पर (उदाहरण के लिए) आपको समाधान मिलेगा कि किसी दिए गए निर्देशिका की ओर संकेत करते हुए सिम्लिंक को कैसे देखें (इसे कॉल करें /dir1), जबकि मैं प्रतीकात्मक लिंक के लिए दिलचस्पी रखता हूं जो संभवतः किसी भी फ़ाइल / फ़ोल्डर को इंगित करता है /dir1।

मैं ऐसी निर्देशिका को हटाना चाहता हूं, लेकिन मुझे यकीन नहीं है कि मैं ऐसा करने के लिए सुरक्षित हूं, जैसा कि एक अन्य निर्देशिका (चलो इसे कहते हैं /dir2) पर, मुझे आंतरिक भागों की ओर संकेत करते हुए सहानुभूति हो सकती है /dir1।

इसके अलावा, मैंने निरपेक्ष या सापेक्ष रास्तों का उपयोग करके इन सिम्बल को बनाया हो सकता है। मेरी एकमात्र मदद यह है कि मुझे पता है कि मैं उन सीमलिंक को जांचना चाहता हूं जो एक माउंटेड फाइल सिस्टम पर हैं /dir2।

जवाबों:


15

आप सभी प्रतीकात्मक लिंक का उपयोग करके पा सकते हैं:

find / -type l 

आप डिस्क पर हर स्थान पर पहुंचने के लिए इसे रूट के रूप में चलाना चाह सकते हैं।

आप readlink -fलिंक का पूरा रास्ता पाने के लिए इनका विस्तार कर सकते हैं और आपको grepलक्ष्य निर्देशिका के खिलाफ आउटपुट में सक्षम होना चाहिए जिसे आप हटाने के लिए विचार कर रहे हैं:

find / -type l -exec readlink -f {} + | grep -F /dir2

का उपयोग करना find / -type l -printf '%l\n'काम नहीं करता है क्योंकि आपको रिश्तेदार लिंक मिलते हैं, ../tmp/xyzजो आपके लक्ष्य को इंगित कर सकते हैं, लेकिन उनका मिलान नहीं किया जाता है क्योंकि वे पूरी तरह से विस्तारित नहीं हैं।


1
सबट्री के मामले में यह find -L /subtree -xtype l -exec readlink -f {} +
— सहानुभूति

3

मेरे मामले में, स्वीकृत उत्तर उपयोगी नहीं था (क्योंकि यह लिंक स्रोत का उत्पादन नहीं करता था)। यहाँ मेरे लिए क्या काम किया है।

मैंने दो -execखंडों का उपयोग करके इसके चारों ओर काम किया :

find /home/ -type l -exec readlink -nf {} ';' -exec echo " -> {}" ';' | grep "/dir2"

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