Ich muss alle fest verknüpften Dateien auf einem bestimmten Dateisystem finden. ZB eine Liste von Dateien abrufen, jede Zeile enthält verknüpfte Paare oder Drillinge usw.
Ich verstehe mehr oder weniger, wie es geht, man muss ein Wörterbuch erstellen, das von inode für alle Dateien / Verzeichnisse auf einem Dateisystem verschlüsselt ist, "ausschließen." und ".." links und dann indodes mit mehr als einem namen sind hardlinks ... aber ich hoffe, dass vielleicht eine fertige lösung existiert, oder jemand hat schon so ein script geschrieben.
find / -type f -links +1 -printf '%i %n %p\n'
sort
(+uniq
)? Ich war neugierig und habe es auf meinem Hauptcomputer ausprobiert (16 GB i5-2500k mit SSD). mit 2187757 files (find / -xdev -type f | wc
) dauert 12 echte Sekunden, wenn 3820 files / 570 inodes (time sudo find / -xdev -type f -links +1 -printf "%i\n" | sort | uniq | wc
) zurückgegeben werden. Sie müssten die%n %p
für die tatsächlichen Dateien enthalten, wie ich sie zum Zählen von Inodes herausnahm.gibt eine Liste aller Dateien an, die mehr als einen Link haben, dh Dateien, zu denen ein fester Link existiert. Ein Looping darüber ist dann relativ einfach - eine hackige Lösung, wenn Sie nicht so viele Dateien haben würden
Aber ich hoffe aufrichtig, dass es bessere Lösungen gibt, zum Beispiel indem Sie zuerst
find
die Inode-Nummern drucken lassen und dann die Option vonfind
's verwenden-inum
, um alle mit dieser Inode verbundenen Dateien anzuzeigen.quelle
find . -type f -printf '%i %p\n'
, würde es natürlich ermöglichen, eine viel schnellere Lösung zu erstellen.for
Schleife würde eine entsprechende Anpassung von IFS funktionieren. Um die Ausgabe des Befehls find in meinem Kommentar zu analysieren, sollte es auch funktionieren, alles zwischen dem ersten Leerzeichen und dem Ende der Zeile als Dateinamen zu deklarieren.lost+found
usw.). Das ist besonders wichtig, wenn die Ausgabe wie in der zweiten Zeile weiterverarbeitet werden soll.IMHO ist der beste Weg, um die folgende Zeile zu verwenden (sicher müssen Sie
/PATH/FOR/SEARCH/
mit was auch immer Sie suchen , ersetzen ):Dies scannt das Dateisystem nur einmal, zeigt den Inode, die Anzahl der Hardlinks und den Pfad der Dateien mit mehr als einem Hardlink an und sortiert sie nach dem Inode.
Wenn Sie sich über Fehlermeldungen für Ordner ärgern, die Sie nicht lesen dürfen, können Sie die Zeile folgendermaßen erweitern:
quelle