निर्देशिका में सभी प्रतीकात्मक लिंक कैसे सूचीबद्ध करें

मेरे पास एक प्रतीकात्मक लिंक है /var/www/ निर्देशिका जो वर्डप्रेस से लिंक करती है । जब मैं कमांड चलाता हूं ls -la से /var/www/ निर्देशिका वर्डप्रेस का लिंक दिखाई नहीं देता है । क्या निर्देशिका में मौजूद सभी प्रतीकात्मक लिंक को सूचीबद्ध करने का एक तरीका है?

पार्सिंग ls एक है बुरा विचार®, एक सरल पसंद करते हैं find उस मामले में:

find . -type l -ls

केवल वर्तमान निर्देशिका को संसाधित करने के लिए:

find . -maxdepth 1 -type l -ls

क्रेडिट्स: मैं `एलएस-ए` कमांड द्वारा लौटाए गए फ़ाइल नामों को पहचानने के लिए शेल कैसे बना सकता हूं, और इन नामों में रिक्त स्थान हैं?

आप उपयोग कर सकते हैं grep साथ में ls वर्तमान निर्देशिका में मौजूद सभी प्रतीकात्मक लिंक को सूचीबद्ध करने का आदेश ।

यह वर्तमान निर्देशिका में मौजूद सभी लिंक को सूचीबद्ध करेगा ।

ls -la /var/www/ | grep "\->"

grep आपका दोस्त है:

ls -lhaF | grep ^l   # list linksls -lhaF | grep ^d   # list directoriesls -lhaF | grep ^-   # list files

यह "एल" से शुरू होने वाली लाइनों को सूचीबद्ध करेगा जो परमिट कॉलम में लिंक का प्रतिनिधित्व करते हैं l उपयोग करें d निर्देशिकाओं के लिए और - फाइलों के लिए

पॉज़िक्सली:

find ! -name . -prune -type l

यह एक निर्देशिका में सभी प्रतीकात्मक रूप से जुड़े आइटम (डीआईआर और एफएन दोनों) लौटाता है:

find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"

हालांकि, वास्तविक प्रतीकात्मक रूप से जुड़े आइटम प्रकारों के बीच अंतर करने के लिए:

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1

केवल प्रतीकात्मक रूप से लिंक किए गए फ़ाइल नाम आइटम लौटाता है । और,

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1

केवल प्रतीकात्मक रूप से लिंक किए गए डिरनाम आइटम लौटाता है ।

एक निर्देशिका में प्रतीकात्मक लिंक देखने के लिए:

  1. एक टर्मिनल खोलें और उस निर्देशिका में जाएं ।

  2. कमांड टाइप करें:

    ls -la

    यह निर्देशिका में सभी फ़ाइलों को लंबे समय तक सूचीबद्ध करेगा, भले ही वे छिपी हों ।

  3. फाइलें जो शुरू होती हैं l आपकी प्रतीकात्मक लिंक फ़ाइलें हैं ।

प्रकार ls -lai, यह सभी फाइलों और उपनिर्देशिकाओं को संबंधित इनोड संख्याओं के साथ सूचीबद्ध करेगा । आप जानते हैं कि समान इनोड नंबर वाली फाइलें लिंक(हार्ड या सॉफ्ट) हैं और यह समाधान प्रतीकात्मक लिंक के लिए भी काम करता है ।

अजगर के साथ भी किया जा सकता:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /path/to/dir

नमूना रन:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /etc/etc/vtrgb/etc/printcap/etc/resolv.conf/etc/os-release/etc/mtab/etc/localtime

इसे पुनरावर्ती होने के लिए बढ़ाया जा सकता है os.walk फ़ंक्शन, लेकिन एक निर्देशिका में लिंक सूचीबद्ध करने के लिए सरल सूची पीढ़ी का उपयोग करना पर्याप्त है जैसा कि मैंने ऊपर दिखाया था ।

कृपया किसी भी लिनक्स आधारित ओएस में सभी टूटे हुए प्रतीकात्मक लिंक को खोजने के लिए एक लाइनर बैश स्क्रिप्ट कमांड के नीचे खोजें

b=$(find / -type l); for i in $(echo $b); do file $i ; done |grep -i broken 2> /dev/null

जेडएसएच का उपयोग करना

ls -l *(@)lrwxrwxrwx 1 david david 15 Nov 18 22:35 gvimrc -> /etc/vim/gvimrclrwxrwxrwx 1 david david 13 Nov 18 22:19 mydomains.php -> mydomains.php