كيفية العثور على جميع الملفات التي هي في الأساس الروابط لينة أو صلبة من الدلائل أو ملفات أخرى على لينكس؟

StackOverflow https://stackoverflow.com/questions/1810334

سؤال

وكيف يمكن أن أحصل على قائمة بجميع الملفات المرتبطة على نظام بلدي أو من دليل معين. اعتدت على إنشاء روابط لكنها أصبحت لا يمكن السيطرة عليها مع مرور الوقت. أريد قائمة بجميع هذه الروابط من دليل. يمكن لأي شخص أن تساعد؟

هل كانت مفيدة؟

المحلول

وإيجاد روابط الرمزية من السهل:

% find . -type l

وإيجاد الروابط الصعبة صعبة، لأنه إذا كان دليل فرعي للدليل في السؤال له أيضا الدلائل ثم تلك الزيادة في عدد الارتباط الثابت. هذه هي الطريقة التي ترتبط الدلائل إلى آبائهم في UNIX (انها دخول .. في كل دليل فرعي).

إذا كنت تريد فقط لتجد مرتبطة <م> الملفات (وليس الدلائل)، هذا العمل:

% find . -type f \! -links 1

ويعمل هذا لأن ملف <م> لا ديهم وصلات من الصعب أن يكون عدد صلة> 1، وملف غير المرتبطة ديه == رابط عدد 1، وبالتالي يبدو هذا الأمر لكافة الملفات التي الارتباط العد < > 1

وبدلا من ذلك، على إصدارات أحدث من find تستطيع استعمال:

% find . -type f -links +1

وهذا يعمل لنفس السبب أعلاه؛ ومع ذلك، يمكن إصدارات أحدث من العثور تتخذ + ن أو -n بدلا من مجرد رقم. هذا هو ما يعادل اختبار أكبر من ن أو أقل من ن، على التوالي.

نصائح أخرى

find / -xdev -samefile filename

وOP، إذا كان لديك GNU العثور عليها، يمكنك العثور على ارتباطات ثابتة باستخدام -printf "%n"، منها مثلا.

find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
 echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
 # if 2 or more files have the same inode number, then they are hard links. 
 # you can therefore count how many $inum that are the same and determine those hard links, which 
 # you have to try doing yourself.
done

وانظر على سبيل المثال هنا https://www.gnu.org/software/findutils /manual/html_node/find_html/Hard-Links.html أو الجمع بين Alnitak وamber_linux الإجابة في find -L /where/to/search -samefile /some/link/to/file للعثور على جميع الروابط المادية وغير المادية لملف معين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top