Mit GNU find
, findet dies die Dateien, die fest oder symbolisch mit einer Datei verknüpft sind:
find -L /dir/to/start -samefile /tmp/orig.file
Ich habe keinen Befehl dafür gesehen und es ist keine leichte Aufgabe, da die Zieldatei keine Informationen darüber enthält, welche Quelldateien darauf verweisen.
Dies ist ähnlich wie "harte" Links, aber zumindest befinden sich diese immer im selben Dateisystem, sodass Sie einen find -inode
ausführen können sie aufzulisten. Softlinks sind problematischer, da sie Dateisysteme überqueren können.
Ich denke, was Sie tun müssen, ist im Grunde eine ls -al
durchzuführen für jede Datei in Ihrer gesamten Hierarchie und verwenden Sie grep
um nach -> /path/to/target/file
zu suchen .
Hier ist zum Beispiel eine, die ich auf meinem System ausgeführt habe (zur besseren Lesbarkeit formatiert - die letzten beiden Zeilen befinden sich tatsächlich auf einer Zeile in der realen Ausgabe):
pax$ find / -exec ls -ald {} ';' 2>/dev/null | grep '\-> /usr/share/applications'
lrwxrwxrwx 1 pax pax 23 2010-06-12 14:56 /home/pax/applications_usr_share
-> /usr/share/applications
Inspiriert von Gordon Davissons Kommentar. Dies ähnelt einer anderen Antwort, aber ich habe die gewünschten Ergebnisse mit exec erhalten. Ich brauchte etwas, das symbolische Links findet, ohne zu wissen, wo sich die Originaldatei befindet.
find / -type l -exec ls -al {} \; | grep -i "all_or_part_of_original_name"