প্রদত্ত ডিরেক্টরিতে থাকা কোনও ফাইল / ডিরেক্টরিকে নির্দেশ করে সমস্ত প্রতীকী লিঙ্কগুলি কীভাবে সন্ধান করবেন


15

এই প্রশ্নে বা এই একটিতে (উদাহরণস্বরূপ) আপনি প্রদত্ত ডিরেক্টরিতে নির্দেশিত সিমলিংকগুলি কীভাবে সন্ধান করতে হবে তার সমাধান পাবেন (আসুন আমরা এটি কল করি /dir1), আমি প্রতীকী লিঙ্কগুলিতে সম্ভবত অভ্যন্তরের যে কোনও ফাইল / ফোল্ডারের দিকে ইঙ্গিত করতে আগ্রহী /dir1

আমি এই জাতীয় ডিরেক্টরি মুছতে চাইছি তবে আমি নিশ্চিত নই যে আমি এটির জন্য নিরাপদ, অন্য ডিরেক্টরি হিসাবে (আসুন এটি কল করি /dir2), আমার অভ্যন্তরের অভ্যন্তরের অংশগুলিতে ইশারা করে সিমলিংক থাকতে পারে /dir1

আরও, আমি নিখুঁত বা আপেক্ষিক পাথ ব্যবহার করে এই চিহ্নগুলি তৈরি করেছি। আমার একমাত্র সহায়তা হ'ল আমি জানি যে সিলেলিকগুলি আমি যাচাই করতে চাই তা একটি মাউন্ট করা ফাইল সিস্টেমে রয়েছে /dir2

উত্তর:


15

আপনি ব্যবহার করে সমস্ত প্রতীকী লিঙ্কগুলি খুঁজে পেতে পারেন:

find / -type l 

ডিস্কের প্রতিটি জায়গায় যাওয়ার জন্য আপনি এটি রুট হিসাবে চালাতে চাইতে পারেন।

আপনি readlink -fলিঙ্কটির পুরো পথটি ব্যবহার করে এগুলি প্রসারিত করতে পারেন এবং আপনি grepযে টার্গেট ডিরেক্টরিটি মুছে ফেলার জন্য বিবেচনা করছেন তার বিরুদ্ধে আপনি আউটপুট তৈরি করতে সক্ষম হবেন :

find / -type l -exec readlink -f {} + | grep -F /dir2

ব্যবহারটি কার্যকর find / -type l -printf '%l\n'হয় না কারণ আপনি আপেক্ষিক লিঙ্কগুলি পান ../tmp/xyzযা আপনার লক্ষ্য দিরের দিকে ইঙ্গিত করতে পারে তবে মিলছে না কারণ সেগুলি পুরোপুরি প্রসারিত নয়।


1
find -L /subtree -xtype l -exec readlink -f {} +
সাবট্রির

3

আমার ক্ষেত্রে, গৃহীত উত্তরটি কার্যকর ছিল না (কারণ এটি লিঙ্ক উত্স আউটপুট দেয়নি)। আমার জন্য যা কাজ করেছে তা এখানে।

আমি দুটি -execধারা ব্যবহার করে এর চারপাশে কাজ করেছি :

find /home/ -type l -exec readlink -nf {} ';' -exec echo " -> {}" ';' | grep "/dir2"

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