Saya perlu menemukan semua file yang di-hardlink pada sistem file yang diberikan. Misalnya mendapatkan daftar file, setiap baris berisi pasangan yang terhubung, atau kembar tiga, dll.
Saya mengerti kurang lebih bagaimana melakukannya, kita perlu membuat kamus yang dikunci oleh inode untuk semua file / direktori pada sistem file, kecuali "." dan tautan "..", dan kemudian indode dengan lebih dari satu nama adalah hardlink ... Tapi saya harap mungkin ada solusi yang sudah ada, atau seseorang sudah menulis skrip seperti itu.
find / -type f -links +1 -printf '%i %n %p\n'
sort
(+uniq
)? Saya penasaran jadi mencobanya di komputer utama saya (16GB i5-2500k dengan SSD). dengan 2187757 file (find / -xdev -type f | wc
) membutuhkan 12 detik nyata saat mengembalikan 3820 file / 570 inode (time sudo find / -xdev -type f -links +1 -printf "%i\n" | sort | uniq | wc
). Anda harus memasukkan%n %p
untuk file yang sebenarnya karena saya mengambilnya untuk menghitung inode.memberikan daftar semua file yang memiliki lebih dari satu tautan, yaitu file yang terdapat tautan keras. Melompati hal ini relatif mudah - solusi peretasan jika Anda tidak memiliki banyak file
Tapi saya sangat berharap bahwa ada solusi yang lebih baik, misalnya dengan membiarkan pertama
find
panggilan nomor cetak inode dan kemudian menggunakanfind
's-inum
pilihan untuk menampilkan semua file yang terkait dengan inode ini.sumber
find . -type f -printf '%i %p\n'
, akan memungkinkan seseorang untuk membangun solusi yang jauh lebih cepat.for
loop, menyesuaikan IFS sesuai akan berhasil. Untuk mem-parsing output dari perintah find dalam komentar saya, menyatakan semuanya antara spasi pertama dan akhir baris sebagai nama file harus bekerja juga.lost+found
dll.); yang sangat penting, jika output harus diproses lebih lanjut seperti pada baris kedua.IMHO cara terbaik adalah dengan menggunakan baris berikut (pasti Anda harus mengganti
/PATH/FOR/SEARCH/
dengan apa pun yang ingin Anda cari):ini memindai sistem file hanya sekali, menunjukkan inode, jumlah hardlink dan jalur file dengan lebih dari satu hardlink dan mengurutkannya sesuai dengan inode.
jika Anda terganggu oleh pesan kesalahan untuk folder yang Anda tidak boleh baca, Anda dapat memperluas baris ke ini:
sumber