Trovare tutti i collegamenti simbolici e reali a un file su UNIX


9

Se ho un file specifico in un filesystem UNIX, c'è un modo per usare bash per trovare tutti i collegamenti a quel file, sia simbolici che hard? Se ho bisogno di comandi diversi per ognuno, quali sono?

Risposte:


8

Prova questo con GNU find:

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

Esempio di 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

È possibile utilizzare -lsinvece di -execma mostrerà l'inode e altre informazioni del file di destinazione anziché i singoli file.


Questo output mostra link hard e sym? Collegamenti Sym indicati da -> freccia?
aaaidan,

@aaaidan: Sì, è corretto. Il numero di inode di x1 e x2 sono gli stessi indicando che sono collegamenti reali. La freccia indica un collegamento simbolico. Utilizzando -Le -samefilefa sì che entrambi siano elencati. Se si omette, i -Lcollegamenti simbolici non vengono seguiti (vedere man find).
In pausa fino a ulteriore avviso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.