Wie konnte ich die Liste aller verknüpften Dateien auf meinem System oder von einem bestimmten Verzeichnis erhalten. Ich habe Links erstellt, aber sie wurden mit der Zeit nicht mehr handhabbar. Ich möchte die Liste aller solcher Links aus einem Verzeichnis. Kann jemand helfen?Wie finden Sie alle Dateien, die im Grunde weiche oder harte Links anderer Verzeichnisse oder Dateien auf Linux sind?
Antwort
Symlinks zu finden ist einfach:
% find . -type l
harte Links zu finden heikel, denn wenn ein Unterverzeichnis des Verzeichnisses in Frage auch Unterverzeichnisse hat dann diese Erhöhung des Hardlink zu zählen. So sind Unterverzeichnisse mit ihren Eltern in UNIX verbunden (es ist der ..
Eintrag in jedem Unterverzeichnis).
Wenn Sie nur Dateien (und keine Verzeichnisse) verbunden finden, wird diese Arbeit:
% find . -type f \! -links 1
Dies funktioniert, weil eine Datei, die tut haben harte Links einen Link haben count> 1 und nicht verknüpfte Datei einen Link Zahl == hat 1, daher sieht dieser Befehl für alle Dateien, deren Linkzähler <> 1
Alternativ auf neuere Versionen von find
Sie nutzen könnten:
% find . -type f -links +1
Dies funktioniert aus dem gleichen Grund wie oben; Neuere Versionen von find können jedoch + n oder -n statt nur einer Zahl verwenden. Dies entspricht einem Test für mehr als n bzw. weniger als n.
Wao, das war so ein kleiner Befehl. Danke Alnitak – DKSRathore
Er ... kann eine Datei <1 Link haben? Ich meine, würde es das nicht zu einem düsteren Inode machen? – naught101
@ naught101 Nun, Liefern von -1 würde tatsächlich keine Dateien finden. – Alnitak
@OP, Wenn Sie GNU finden, finden Sie feste Verbindungen mit -printf "%n"
, z.
find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
# if 2 or more files have the same inode number, then they are hard links.
# you can therefore count how many $inum that are the same and determine those hard links, which
# you have to try doing yourself.
done
find/-xdev -samefile filename
Siehe z hier https://www.gnu.org/software/findutils/manual/html_node/find_html/Hard-Links.html oder kombinieren Alnitak und amber_linux Antwort in find -L /where/to/search -samefile /some/link/to/file
, um alle harten und weichen Links zu einer bestimmten Datei zu finden.
Vielen Dank! Das war genau das, wonach ich suchte - wie finde ich heraus, welche anderen Dateien tatsächlich die selbe Datei sind wie die, die ich mir ansehe? – cb2
Ich denke, das gehört zu Serverfehler –
Was ist Serverfault? – DKSRathore
versuchen Sie es hier: serverfault.com –