Wie finde ich alle Link-Dateien, die auf eine bestimmte Originaldatei zeigen?

3 Antworten

Von Experte Roderic bestätigt

Was suchst du: hard links oder symbolische Links? Das sind grundlegend verschiedene Dinge, auch wenn der Effekt auf den ersten Blick gleich scheinen mag.

Letzlich wird es kaum ohne find gehen. Ein Link ist unidirektional, d.h. eine Datei weiß nicht selbst, wer auf sie zeigt.

Mit

find / -type l -ls

kannst du alle symbolischen Links finden, deren Ziel anzeigen, und die Liste kannst du dann mit grep nach der Zieldatei filtern.


Marwin388 
Beitragsersteller
 15.07.2025, 21:43

Hab doch HARD LINKS geschrieben

gabriel3544  15.07.2025, 21:45
@Marwin388
Gibt es einen Befehl oder eine Methode, um alle symbolischen Links zu finden, die auf eine bestimmte Datei zeigen?

bei einem Hard-Link haben alle Dateien, die so untereinander den gleichen inode

der Befehl

ls -i <Dateiname> zeigt dir diesen inode für diese Datei an

damit kannst du "Partitions-Weit" suchen

ls -ir * |grep <inode-wie-ermittelt>

Damit listet er die Dateien mit gleichem inode, dann aber unterschiedlichen Namen auf.
Beachte Hard-Links sind nur innerhalb eines Filesystems möglich, also nur auf der gleichen Partition

Woher ich das weiß:Berufserfahrung

Lies:

https://www.redhat.com/en/blog/linking-linux-explained

und:

https://www.redhat.com/en/blog/inodes-linux-filesystem

Das hilft dir erstmal zum Verständnis.

Lass dir von der Datei List die Anzahl der auf sie verweisenden hardlinks anzeigen:

ls -l List

ist der wert 1 dann existieren keine hardlinks. Ist er größer als 1 dann existieren welche. Lass dir dann den inode der Datei List anzeigen:

ls -li List

Dann musst du wohl oder übel rekursiv durch den ganzen Baum durchackern angefangen bei / und dir die Dateien herausfiltern, die dieselbe inode haben.