UNIX पर किसी फ़ाइल के सभी प्रतीकात्मक और कठिन लिंक ढूंढना


9

अगर मेरे पास UNIX फाइल सिस्टम में एक विशिष्ट फ़ाइल है, तो क्या उस फ़ाइल के सभी लिंक खोजने के लिए बैश का उपयोग करने का एक तरीका है, दोनों प्रतीकात्मक और कठोर? अगर मुझे प्रत्येक के लिए अलग-अलग कमांड चाहिए, तो वे क्या हैं?

जवाबों:


8

इसे GNU के साथ आज़माएँ find:

find /start/dir -L -samefile /file/to/check -exec ls -li {} \;

उदाहरण आउटपुट:

1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1

आप -lsइसके बजाय का उपयोग कर सकते हैं , -execलेकिन यह व्यक्तिगत फ़ाइलों के बजाय लक्ष्य फ़ाइल की इनकोड और अन्य जानकारी दिखाएगा।


यह आउटपुट कठिन और सुसंगत लिंक दिखा रहा है? संकेत लिंक -> तीर द्वारा?
आअदीन

@ वायदान: हां, यह सही है। एक्स 1 और एक्स 2 की इनकोड संख्या एक ही संकेत है कि वे हार्ड लिंक हैं। तीर एक सिमलिंक इंगित करता है। उपयोग करने -Lऔर -samefileसूचीबद्ध होने का कारण बनता है। यदि आप छोड़ देते हैं -Lतो प्रतीकात्मक लिंक का पालन नहीं किया जाता है (देखें man find)।
अगली सूचना तक रोक दिया गया।

2

यदि आपके पास GNU नहीं है, तो आप यह कर सकते हैं:

find / -inum "$(ls -i /file/to/check | cut -d ' ' -f 1)"

लेकिन यह प्रतीकात्मक लिंक के लिए काम नहीं करेगा।


1
ओह, अब मैं देख रहा हूं कि यह प्रश्न पहले से ही इसका उत्तर देता है: superuser.com/questions/12972/to-see-hardlinks-by-ls
Ollie Saunders
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.