Пошук усіх символічних та жорстких посилань на файл у UNIX


9

Якщо я маю конкретний файл у файловій системі UNIX, чи існує спосіб використання bash для пошуку всіх посилань на цей файл, як символічних, так і жорстких? Якщо мені потрібні різні команди для кожного, які вони?

Відповіді:


8

Спробуйте це з GNU 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але він покаже вкладку та іншу інформацію цільового файлу замість окремих файлів.


Цей вихід показує жорсткі та символьні посилання? Посилання символів, позначені стрілкою ->?
aaaidan

@aaaidan: Так, це правильно. Число inode x1 і x2 однакові, що вказує на те, що вони є жорсткими зв'язками. Стрілка позначає симпосилання. Використання -Lта -samefileпричини переліку обох. Якщо ви пропустите, -Lсимволічні посилання не дотримуються (див. man find).
Призупинено до подальшого повідомлення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.