प्रतीकात्मक लिंक: सभी फ़ाइलें खोजें जो इस फ़ाइल से लिंक करती हैं


115

सभी को नमस्कार, मुझे लिनक्स में यह करने की आवश्यकता है:

  • दिया गया: फ़ाइल का नाम 'foo.txt'
  • खोजें: सभी फाइलें जो 'foo.txt' के प्रतीकात्मक लिंक हैं

यह कैसे करना है? धन्यवाद!


जवाबों:


132

यह निर्भर करता है, यदि आप किसी विशिष्ट फ़ाइल के लिंक खोजने की कोशिश कर रहे हैं जिसे कॉल किया जाता है foo.txt,तो यह एकमात्र अच्छा तरीका है:

find -L / -samefile path/to/foo.txt

दूसरी ओर, यदि आप किसी भी फ़ाइल का लिंक ढूंढने का प्रयास कर रहे हैं foo.txt, जिसका नाम होना है , तो कुछ ऐसा है

find / -lname foo.txt

या

find . -lname \*foo.txt # ignore leading pathname components

समस्या खूबसूरती से हल हो गई। सभी लोगों को धन्यवाद जिन्होंने उत्तर दिया।
lukmac

8
जैसा कि मैंने एक हटाए गए उत्तर पर टिप्पणी की है, आप -xtype lकेवल सूची
सिम्बलिंक्स का

आप पुनरावृत्ति करना चाह सकते हैं, क्योंकि foo.txt की ओर इशारा करने वाली कोई भी फ़ाइल कुछ अन्य लिंक द्वारा स्वयं इंगित की जा सकती है ... उदा: A-> B-> foo.txt, / tmp / C-> B-> foo.txt, इत्यादि
ओलिवियर दुलाक

यह तब भी काम कर सकता है जब आपका नाम घटक लिंक में नामित एक पैरेंट डायरेक्टरी है, खोज find . -lname '*foo.dir*'(उदाहरण के लिए file.txt -> ../foo.dir/file.txt)
योनातन

22

फ़ाइल का इनकोड नंबर ढूंढें और फिर उसी इनोड नंबर वाली सभी फ़ाइलों को खोजें:

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

वैकल्पिक रूप से, के lnameविकल्प का प्रयास करें find, लेकिन यह काम नहीं करेगा यदि आपके पास रिश्तेदार सहानुभूति उदाa -> ../foo.txt

$ find . -lname /path/to/foo.txt

3
यदि GNU खोज के हाल के संस्करण का उपयोग कर रहे हैं, तो आप उसी प्रभाव के -samefileसाथ विकल्प का उपयोग भी कर सकते हैं -L, बिना
इनकोड

5
लेकिन इससे अन्य फाइल सिस्टम पर फाइलें भी मिलेंगी जो एक ही इनोड नंबर के साथ होती हैं।
डिजिटलरॉस

यदि fooएक निर्देशिका है, का उपयोग करें ln -di, एक पंक्ति में:find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
rubo77

1
यह उत्तर गलत है। एक सिम्लिंक में अपने लक्ष्य के समान इनोड नहीं होता है। यह केवल सिम्लिंक किए गए फ़ोल्डर के अंदर एक फ़ाइल के लिए काम करेगा। लेकिन यह नहीं पूछा गया था।
जूल्स लामुर

4

मैं symlinksउपयोगिता का उपयोग करना पसंद करता हूं , जो कि टूटी हुई सीलिंक्स की खोज करते समय भी काम आता है। द्वारा स्थापित करें:

sudo apt install symlinks

वर्तमान फ़ोल्डर और सबफ़ोल्डर्स में सभी सिम्लिंक दिखाएं:

symlinks -rv .
  • -r: पुनरावर्ती
  • -v: क्रिया (सभी सिम्बलिंक दिखाएं, केवल टूटे हुए नहीं)

एक विशिष्ट सिमलिंक खोजने के लिए, बस grep:

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