যদি আমার ইউনিক্স ফাইল সিস্টেমে একটি নির্দিষ্ট ফাইল থাকে, তবে সেই ফাইলটির সমস্ত লিঙ্ক, প্রতীকী এবং শক্ত উভয় সন্ধান করার জন্য ব্যাশ ব্যবহার করার কোনও উপায় আছে কি? যদি আমার প্রত্যেকের জন্য আলাদা কমান্ডের প্রয়োজন হয় তবে সেগুলি কী?
যদি আমার ইউনিক্স ফাইল সিস্টেমে একটি নির্দিষ্ট ফাইল থাকে, তবে সেই ফাইলটির সমস্ত লিঙ্ক, প্রতীকী এবং শক্ত উভয় সন্ধান করার জন্য ব্যাশ ব্যবহার করার কোনও উপায় আছে কি? যদি আমার প্রত্যেকের জন্য আলাদা কমান্ডের প্রয়োজন হয় তবে সেগুলি কী?
উত্তর:
জিএনইউ দিয়ে এটি ব্যবহার করে দেখুন find
:
find /start/dir -L -samefile /file/to/check -exec ls -li {} \;
উদাহরণ আউটপুট:
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x1
1234704 -rw-r--r-- 2 user1 user1 1134 2009-09-11 11:12 ./x2
1234983 lrwxrwxrwx 1 user1 user1 2 2009-10-31 16:56 ./testx -> x1
2345059 lrwxrwxrwx 1 user2 user2 2 2010-01-03 16:17 ./x3 -> x1
আপনি এর -ls
পরিবর্তে ব্যবহার করতে পারেন -exec
তবে এটি পৃথক ফাইলের পরিবর্তে লক্ষ্য ফাইলের আইनोড এবং অন্যান্য তথ্য প্রদর্শন করবে।
-L
এবং -samefile
উভয় তালিকাবদ্ধ হতে কারণ। যদি আপনি বাদ দেন -L
তবে প্রতীকী লিঙ্কগুলি অনুসরণ করা হয় না (দেখুন man find
)।
আপনার যদি জিএনইউ না থাকে তবে আপনি এটি করতে পারেন:
find / -inum "$(ls -i /file/to/check | cut -d ' ' -f 1)"
তবে এটি প্রতীকী লিঙ্কগুলির জন্য কাজ করবে না।