প্রতীকী লিঙ্ক: এই ফাইলটিতে লিঙ্কযুক্ত সমস্ত ফাইল সন্ধান করুন


115

হ্যালো, লিনাক্সে আমার এটি করা দরকার:

  • প্রদত্ত: ফাইলের নাম 'foo.txt'
  • অনুসন্ধান করুন: সমস্ত ফাইল যা 'foo.txt' এর প্রতীকী লিঙ্ক

এটা কিভাবে করতে হবে? ধন্যবাদ!


উত্তর:


132

এটি নির্ভর করে, আপনি যদি নির্দিষ্ট একটি ফাইলের জন্য লিঙ্কগুলি অনুসন্ধান করার চেষ্টা করছেন foo.txt,তবে এটিই একমাত্র ভাল উপায়:

find -L / -samefile path/to/foo.txt

অন্যদিকে, আপনি যদি নামকরণ হতে পারে এমন কোনও ফাইলের লিঙ্কগুলি সন্ধান করার চেষ্টা করছেন foo.txt, তবে এর মতো কিছু

find / -lname foo.txt

অথবা

find . -lname \*foo.txt # ignore leading pathname components

সমস্যাটি সুন্দরভাবে সমাধান করা। জবাব দেওয়া সকল লোককে ধন্যবাদ।
— lukmac

8
আমি যেমন মুছে ফেলা উত্তরে মন্তব্য করেছি, আপনি -xtype lকেবলমাত্র তালিকার
— সিমলিংকগুলি

আপনি পুনরাবৃত্তি করতে চাইতে পারেন, যেহেতু foo.txt এর দিকে ইঙ্গিত করা ফাইলগুলির মধ্যে যে কোনও ফাইল নিজেরাই অন্য কয়েকটি লিঙ্ক দ্বারা পয়েন্ট করা যেতে পারে ... যেমন: এ-> বি-> foo.txt, / tmp / C-> বি-> foo.txt, ইত্যাদি
— অলিভিয়ার ডুলাক

আপনার নামের উপাদানটি লিঙ্কটির নামের একটি মূল ডিরেক্টরি হিসাবে অনুসন্ধান করে find . -lname '*foo.dir*'(মেলে যেমন file.txt -> ../foo.dir/file.txt)
— যোনাতন

22

ফাইলটির ইনোড নম্বরটি সন্ধান করুন এবং তারপরে একই ইনোড নম্বর সহ সমস্ত ফাইল অনুসন্ধান করুন:

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

বিকল্পভাবে, lnameবিকল্পটি চেষ্টা করে দেখুন find, তবে আপনার যদি আপেক্ষিক সিমলিংক থাকে তবে এটি কাজ করবে নাa -> ../foo.txt

$ find . -lname /path/to/foo.txt

3
জিএনইউ -samefile-L
— সন্ধানের

5
তবে এটি অন্যান্য ফাইল সিস্টেমে ফাইলগুলিও খুঁজে পেতে পারে যা একই ইনোড নম্বর হয়।
— ডিজিটালরোস 31:11

যদি fooডিরেক্টরি ln -diহয় তবে এক লাইনে ব্যবহার করুন :find . -follow -inum $(ls -di foo.txt |cut -d" " -f1)
— রুব 77 ই

1
এই উত্তরটি ভুল। একটি সিমিলিংকের লক্ষ্য হিসাবে একই ইনোড নেই। এটি কেবল একটি সিমলিঙ্কযুক্ত ফোল্ডারের ভিতরে থাকা কোনও ফাইলের জন্য কাজ করবে। তবে এটি যা বলা হয়েছিল তা নয়।
— জুলস লামুর

4

আমি symlinksইউটিলিটিটি ব্যবহার করতে পছন্দ করি , যা ভাঙা প্রতিলিঙ্কগুলি অনুসন্ধান করার সময়ও কার্যকর। এর মাধ্যমে ইনস্টল করুন:

sudo apt install symlinks

বর্তমান ফোল্ডার এবং সাবফোল্ডারগুলিতে সমস্ত সিমলিঙ্কগুলি দেখান:

symlinks -rv .
  • -r: পুনরাবৃত্তি
  • -v: ক্রিয়াপদ (সমস্ত প্রতীকগুলি দেখান, কেবল ভাঙ্গা নয়)

একটি নির্দিষ্ট syMLink সন্ধান করতে, কেবলমাত্র grep:

symlinks -rv . | grep foo.txt
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.