एक निर्देशिका में सभी फ़ाइलों को पुन: सूची दें, जिसमें सिम्लिंक निर्देशिकाओं में फाइलें भी शामिल हैं


147

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

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


जवाबों:


232

आप जो चाहते हैं उसे पूरा -Lकरने का विकल्प ls। यह प्रतीकात्मक लिंक को दर्शाता है।

तो आपकी आज्ञा होगी:

ls -LR

आप भी इसे पूरा कर सकते हैं

find -follow

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

Mac OS X का उपयोग करें

find -L

के रूप -followमें पदावनत कर दिया गया है।


14
-follow खोज के नए संस्करणों में -L के पक्ष में हटा दिया गया है।
पीजेड

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

यह मेरे लिए काम नहीं किया। पहले कुछ भी नहीं हुआ फिर मैंने कोशिश की -follow- और यह कहा कि यह फ़ोल्डर नहीं मिलाollow
smatthewenglish

4
OS X 10.10 पर यह काम करता है: find -L .- मुझे @ S.Matthew_English
20-20

आपका उत्तर अच्छा है, लेकिन मैं followकेवल फ़ाइल पथ (फ़ाइल करने के लिए पूर्ण पथ) चाहता हूं और निर्देशिका पथ नहीं, मैं यह कैसे कर सकता हूं?
विक्की देव

116

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

डिस्क्लेमर : मैंने यह पैकेज लिखा है।


2
कैसे एक आर्क पैकेज के बारे में?
Mr_and_Mrs_D

यह एक अधिक सहज विचार है ls। इसके आसपास चिपकाना भी आसान है।
धुपिन

46
find /dir -type f -follow -print

-type f इसका मतलब यह वास्तविक फ़ाइलों को प्रदर्शित करेगा (सहानुभूति नहीं)

-follow इसका अर्थ है कि यह आपकी निर्देशिका सिम्बलिंक का अनुसरण करेगा

-print यह फ़ाइल नाम प्रदर्शित करने के लिए कारण होगा।

यदि आप ls टाइप डिस्प्ले चाहते हैं, तो आप निम्न कार्य कर सकते हैं

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

यह ls -Lविकल्प की तुलना में एक
प्रीटियर

10

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 विकल्प को देखना चाहिए, जो केवल सिम्लिंक्स का अनुसरण करता है जो आप कमांडलाइन पर इसे पास करते हैं।


5

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

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

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

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

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


2
ls -R -L

-Ldereferences प्रतीकात्मक लिंक। यह फ़ाइलों के लिए किसी भी सहानुभूति को देखने के लिए भी असंभव बना देगा, हालांकि - वे इंगित किए गए फ़ाइल की तरह दिखेंगे।


-1

यदि आप सभी फ़ाइल सामग्री प्रिंट करना चाहते हैं : find . -type f -exec cat {} +

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