2008-09-19 12 views
102

मान लीजिए मैं एक निर्देशिका /dir जो अंदर वहाँ अन्य निर्देशिकाओं /dir/dir11, /dir/dir12, और /dir/dir13 करने के लिए 3 सिमलिंक हैं। मैं dir में dir11, dir12 और dir13 सहित सभी फ़ाइलों को सूचीबद्ध करना चाहता हूं।लिनक्स रिकर्सिवली सूची सिमलिंक निर्देशिकाओं में से फ़ाइलें सहित एक निर्देशिका में सभी फाइलों

अधिक सामान्य होने के लिए, मैं निर्देशिकाओं में से सभी फ़ाइलों को सूचीबद्ध करना चाहता हूं जो symlinks हैं। find ., ls -R, आदि आगे सूचीबद्ध करने के लिए नेविगेट किए बिना सिम्लिंक पर रुकें।

+0

की संभावित डुप्लिकेट मिला [कैसे केवल लिनक्स के साथ फ़ाइल नाम पाने के लिए \ 'लगता है \'?] (Http://stackoverflow.com/questions/5456120/how-to -निली-गेट-फ़ाइल-नाम-लिनक्स-ढूंढ के साथ) –

उत्तर

157

-Lls विकल्प जो आप चाहते हैं उसे पूरा करेंगे। यह प्रतीकात्मक लिंक dereferences।

तो अपने कमांड यह होगी:

ls -LR 

तुम भी

find -follow 

-follow विकल्प निर्देशिकाओं करने के लिए सांकेतिक लिंक का अनुसरण करने के लिए निर्देशन के साथ ऐसा कर सकते हैं।

मैक ओएस एक्स पर का उपयोग

find -L 

-follow के रूप में मान्य नहीं है।

+10

-follow के नए संस्करणों में -एल के पक्ष में बहिष्कृत किया गया है। – pjz

+0

@pjz: '-follow बहिष्कृत के लिए एक क्रॉस-रेफरेंस है; उपयोग -एल '? कुछ हद तक मेरे आश्चर्यजनक आश्चर्य के लिए, मुझे http://www.opengroup.org/onlinepubs/009695399/toc.htm पर POSIX/SUS मानक में सूचीबद्ध '-L' और '-H' मिला, और मेरे आश्चर्य के लिए और भी कुछ नहीं '-फॉलो', इसलिए मैंने अपने स्वयं के प्रश्न का उत्तर दिया। –

+0

यह मेरे लिए काम नहीं किया। पहले कुछ नहीं हुआ तो मैंने '-follow' के साथ प्रयास किया- और यह कहा गया कि यह ओएस एक्स 10.10 पर फ़ोल्डर' ollow' –

7

का उपयोग ls:

ls -LR 
'आदमी ls' से

:

-L, --dereference 
      when showing file information for a symbolic link, show informa‐ 
      tion for the file the link references rather than for the link 
      itself 

या, का उपयोग करते हुए:

find -L . 

खोज मैनपेज से:

-L  Follow symbolic links. 

यदि आप पाते हैं कि आप केवल कुछ प्रतीकात्मक लिंक (जैसे कि आपके द्वारा उल्लिखित केवल अपूर्ण लोगों) का पालन करना चाहते हैं, तो आपको -H विकल्प को देखना चाहिए, जो केवल कमांडलाइन पर आपके द्वारा पास किए गए सिम्लिंक का पालन करता है।

35
find /dir -type f -follow -print 

-type f यह

-follow मतलब है कि यह आपके निर्देशिका सिमलिंक

-print का पालन करेंगे यह फ़ाइल नाम प्रदर्शित करने के लिए कारण होगा असली (नहीं सिमलिंक) फ़ाइलों को प्रदर्शित करेगा मतलब है।

आप एक ls प्रकार प्रदर्शित करना चाहते हैं, तो आपको निम्न

find /dir -type f -follow -print|xargs ls -l 
+0

अच्छा, यह बहुत अच्छा काम करता है –

+0

यह ओएस एक्स –

+0

पर भी ठीक काम करता है, यह 'ls -L' विकल्प – eusoubrasileiro

2
ls -R -L 

-L dereferences सांकेतिक लिंक कर सकते हैं। इससे फ़ाइलों को किसी भी सिम्लिंक को देखना असंभव हो जाएगा, हालांकि - वे पॉइंट-टू फ़ाइल की तरह दिखेंगे।

97

कैसे tree के बारे में? tree -l सिम्लिंक का पालन करेगा।

अस्वीकरण: मैंने यह पैकेज लिखा था। जो करने के लिए फ़ाइल की

+41

की तुलना में एक सुंदर प्रदर्शन प्रस्तुत करता है जो लेखन और उपलब्ध सॉफ़्टवेयर उपलब्ध कराने के लिए ऊपर उठाया गया है:) – mit

+2

एक संग्रह पैकेज के बारे में कैसे? –

+0

@Mr_and_Mrs_D pacman -S अतिरिक्त/पेड़ – etherous

5
find -L /var/www/ -type l 

# man find 
-L  Follow symbolic links. When find examines or prints information about files, the information used shall be taken from the 

गुण लिंक अंक, लिंक को ही (जब तक यह एक टूट प्रतीकात्मक कड़ी है या लगता है असमर्थ है से नहीं को जो लिंक करने के लिए फ़ाइल का परीक्षण बताते हैं)। इस विकल्प का उपयोग तात्पर्य है - नोलाफ। यदि आप बाद में -पी विकल्प का उपयोग करते हैं, तो -नोलाफ अभी भी प्रभावी होगा। यदि -एल प्रभाव में है और इसकी खोज के दौरान एक उपनिर्देशिका के लिए एक प्रतीकात्मक लिंक खोजता है, तो प्रतीकात्मक लिंक द्वारा इंगित उपनिर्देशिका की खोज की जाएगी।

2

मुझे पता था कि tree उपयुक्त था, लेकिन मेरे पास पेड़ स्थापित नहीं हुआ था। तो, मैं एक बहुत करीब वैकल्पिक here

find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/' 
+0

यह वही था जो मुझे चाहिए था। धन्यवाद। –

संबंधित मुद्दे