Wie alle Dateien zu finden, die im Grunde weiche oder harte Links anderer Verzeichnisse oder Dateien auf Linux sind?

StackOverflow https://stackoverflow.com/questions/1810334

Frage

Wie kann ich die Liste aller verknüpften Dateien auf meinem System oder aus einem bestimmten Verzeichnis. Früher habe ich Links zu erstellen, aber sie wurden mit der Zeit unüberschaubar. Ich möchte die Liste der alle diese Links aus einem Verzeichnis. Kann mir jemand helfen?

War es hilfreich?

Lösung

Die Suche nach Symlinks ist einfach:

% find . -type l

Hard-Links zu finden, ist schwierig, denn wenn ein Unterverzeichnis des Verzeichnisses in Frage Unterverzeichnisse auch solchen Erhöhung hat dann die harten Linkzähler. Das ist, wie Unterverzeichnisse zu ihren Eltern in UNIX verbunden sind (es ist der .. Eintrag in jedem Unterverzeichnis).

Wenn Sie nur wollen verknüpft Dateien finden (und keine Verzeichnisse), dies funktionieren wird:

% find . -type f \! -links 1

Das funktioniert, weil eine Datei, die hat haben harte Links einen Link Zahl haben werden> 1, und nicht verknüpfte Datei hat einen Linkzähler == 1, daher sieht dieser Befehl für alle Dateien, deren Linkzähler < > 1

Alternativ auf neuere Versionen von find könnten Sie:

% find . -type f -links +1

Dies funktioniert aus dem gleichen Grund wie oben; jedoch können neuere Versionen von find nehmen + n oder anstelle von nur einer Reihe -n. Dies entspricht dem Test für n größer als oder kleiner als n ist.

Andere Tipps

find / -xdev -samefile filename

@OP, wenn Sie GNU finden, können Sie feste Verbindungen mit -printf "%n" finden, 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

Siehe z.B. Hier https://www.gnu.org/software/findutils /manual/html_node/find_html/Hard-Links.html oder kombinieren Alnitak und amber_linux beantworten in find -L /where/to/search -samefile /some/link/to/file alle harten und weichen Links zu einer bestimmten Datei zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top