একটি ডিরেক্টরিতে সমস্ত প্রতীকী লিঙ্কগুলি কীভাবে তালিকাভুক্ত করবেন

আমার মধ্যে একটি প্রতীকী লিঙ্ক আছে /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