Menemukan semua tautan simbolis dan keras ke file di UNIX


9

Jika saya memiliki file tertentu dalam sistem file UNIX, apakah ada cara untuk menggunakan bash untuk menemukan semua tautan ke file itu, baik simbolis dan sulit? Jika saya memerlukan perintah berbeda untuk masing-masing, apa itu?

Jawaban:


8

Coba ini dengan GNU find:

find /start/dir -L -samefile /file/to/check -exec ls -li {} \;

Contoh output:

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

Anda bisa menggunakan -lsalih-alih -exectetapi itu akan menampilkan inode dan informasi lain dari file target dan bukan file individual.


Output ini menunjukkan tautan yang sulit dan sim? Tautan sym ditunjukkan oleh -> panah?
aaaidan

@aaaidan: Ya, itu benar. Nomor inode x1 dan x2 adalah sama yang menunjukkan bahwa mereka adalah tautan keras. Panah menunjukkan symlink. Menggunakan -Ldan -samefilemenyebabkan keduanya dicantumkan. Jika Anda menghilangkan -Lmaka tautan simbolik tidak diikuti (lihat man find).
Dijeda sampai pemberitahuan lebih lanjut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.