বর্তমান ডিরেক্টরিতে কীভাবে সমস্ত সফট লিঙ্কগুলি (প্রতীকী লিঙ্কগুলি) খুঁজে পাবেন?


10

প্রশ্নটি শেল-স্ক্রিপ্টিং-এর সাথে সম্পর্কিত bash।

বর্তমান ডিরেক্টরিতে থাকা ফাইলগুলি নরম লিঙ্কগুলি রয়েছে এমন কোনও স্ক্রিপ্ট দিয়ে কীভাবে পরীক্ষা করবেন ?

যদি আমি ভুল শব্দটি ব্যবহার করি, যখন আমি নরম লিঙ্কগুলি বলি, তখন আমি ব্যবহার করে তৈরি করা ফাইলগুলি উল্লেখ করছি ln -s।

আমি কেবল ভাবতে পেরেছি তা হল ls -laএকটি অভিব্যক্তি হিসাবে মূল্যায়ন করা এবং এর ফলাফলগুলি বিশ্লেষণ করা, তবে অবশ্যই এটি সর্বোত্তম সমাধান নয়।


1
তাদের "প্রতীকী লিঙ্কগুলি" হিসাবে চিহ্নিত করা হয় ("হার্ড লিঙ্কগুলির বিপরীতে)"।
— পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

রাইটো, আমি জানতাম আমি সম্ভবত শব্দটি ভুল পেয়েছি, মাথা উঁচু করার জন্য ধন্যবাদ
— বুগুইজ

সফট লিঙ্কটি ঠিক ঠিক আছে তবে একটি স্থান রয়েছে। :-) ( en.wikedia.org/wiki/Symbolic_link )
— আরজান

উত্তর:


14

দেখুন 'কন্ডিশনাল এক্সপ্রেশনের' মধ্যে man bash- এই ক্ষেত্রে আপনি চান -h:

for file in *
do
  if [ -h "$file" ]; then
    echo "$file"
  fi
done

2
faqs.org/docs/bashman/bashref_68.html - শর্তসাপেক্ষ প্রকাশের জন্য ম্যান পৃষ্ঠার চেয়ে আরও ভাল পঠন করা যায়।
— মানস দিলাভেরাকিস

ধন্যবাদ @ পলসি এবং @ মনোজ! test -hআমি কি চেয়েছিলাম!
— বুগুইজ

14

আপনার সম্ভবত কোনও স্ক্রিপ্টের দরকার নেই not কোনও শিশু ফোল্ডারে পুনরাবৃত্তি না করে কেবলমাত্র বর্তমান ফোল্ডারে কোনও প্রতীকী লিঙ্কগুলি প্রদর্শন করতে:

অনুসন্ধান . -ম্যাক্সডেপথ 1-টাইপ এল-প্রিন্ট

অথবা, আরও কিছু তথ্য পেতে, এর মধ্যে একটি ব্যবহার করুন:

অনুসন্ধান . -ম্যাক্সডেপথ 1 -প্রকার l -exec ls -ld {} +
অনুসন্ধান . -ম্যাক্সডেপথ 1-টাইপ এল-প্রিন্ট 0 | xargs -0 ls -ld

কোনও ফাইল প্রতীকী লিঙ্ক কিনা তা জানাতে , কেউ ব্যবহার করতে পারে readlink, যা প্রতীকী লিঙ্ক না হলে কিছুই আউটপুট দেয় না। নিম্নলিখিত উদাহরণটি বেশ কার্যকর নয়, তবে কীভাবে readlinkসাধারণ ফাইল এবং ফোল্ডার উপেক্ষা করে তা দেখায় । এর মধ্যে একটি ব্যবহার করুন:

অনুসন্ধান . -ম্যাক্সডেপথ 1-এক্সেক রিডলিঙ্ক {} +
অনুসন্ধান . -ম্যাক্সডেপথ 1 -প্রিন্ট 0 | xargs -0 রিডলিঙ্ক

লক্ষ্য করুন যে উপরের -exec ... +এবং xargs ...এর চেয়ে অনেক দ্রুত -exec ... \;। ভালো লেগেছে:

সময় সন্ধান / usr / বিন-ম্যাক্সডেপথ 1-টাইপ l -exec ls -ld ld} \;
আসল 0m0.372s
ব্যবহারকারী 0m0.087s
sys 0m0.163s

সময় সন্ধান / ইউএসআর / বিন-ম্যাক্সডেপথ 1-টাইপ এল-এক্সেক এলএস -ld {} +
আসল 0m0.013s
ব্যবহারকারী 0m0.004 এস
ss 0m0.008s

সময় সন্ধান / ইউএসআর / বিন-ম্যাক্সডেপথ 1-টাইপ এল-প্রিন্ট 0 | xargs -0 ls -ld
আসল 0m0.012s
ব্যবহারকারী 0m0.004 এস
sys 0m0.009s

আমি পলসির উত্তরটি আরও ভাল পছন্দ করেছি, এখনও আপনার জন্য এটি +1, যেহেতু আমার কোনও দিন এটি শেল স্ক্রিপ্টের বাইরে করার দরকার হতে পারে।
— বুগুইজ

1
আপনার অগত্যা xargs দরকার নেই। আপনি সবেমাত্র ব্যবহার করতে পারেন। -ম্যাক্সডেপথ 1-এক্সেক রিডলিংক {} \;
— 23 এ দণ্ডিত করুন

এটা ঠিক যে, @stib কিন্তু xargsহয় অনেক উপর আমার ম্যাক দ্রুত; আমার সম্পাদনা দেখুন। কিন্তু আমি নতুন আজ কিছু শিখেছি: এছাড়াও আছে +পরিবর্তে \;(যদিও কিছু বলে যে দাবি করা এই আছে / সমস্যা সঙ্গে grep।)
— Arjan
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.