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


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.