The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 2,514 other followers

linux – How can I find all hardlinked files on a filesystem? – Super User

Posted by jpluimers on 2021/08/25

[WayBack] linux – How can I find all hardlinked files on a filesystem? – Super User

use the following line (for sure you have to replace /PATH/FOR/SEARCH/ with whatever you want to search):

find /PATH/FOR/SEARCH/ -xdev -printf '%i\t%n\t%p\n' | fgrep -f <(find . -xdev -printf '%i\n' | sort -n | uniq -d) | sort -n

this scans the filesystem only once, shows inode, number of hardlinks and path of files with more than one hardlink and sorts them according to the inode.

if you are annoyed by error messages for folders you aren’t allowed to read, you can expand the line to this:

find /PATH/FOR/SEARCH/ -xdev -printf '%i\t%n\t%p\n' 2> /dev/null | fgrep -f <(find . -xdev -printf '%i\n' 2> /dev/null | sort -n | uniq -d) | sort -n

It uses these commands:

–jeroen

One Response to “linux – How can I find all hardlinked files on a filesystem? – Super User”

  1. jpluimers said

    Twitter thread:

    Die Frage macht keinen Sinn.

    Alle Files sind hardlinked. Ihr Link Count ist 1 oder höher.

    Unix hat kein delete, aber unlink. Es entfernt einen der Namen einer Datei.

    Dateien mit Link Count 0 und Use Count 0 werden vom OS freigegeben.

    In traditionellem Unix listet ncheck die Namen zu Files auf, gegeben maj/min/inode. Das ist langsam, genau wie der find da.

    In Linux ist das Dateisystem spezifisch und in debugfs als subcommand für ext2 bis 4 enthalten.

    Jedes directory hat zwei Namen, den Namen und .

    Jedes directory hat einen weiteren Namen für jedes Subdirectory, nämlich ..

    Link Count minus 2 ist die Anzahl der Subdirectories eines Verzeichnis. GNU find benutzt das um manche suchen zu beschleunigen.

    Darum gibt es den mkdir Systemaufruf, eine BSD Erweiterung.

    Version 7 hat Verzeichnisse mit mknod angelegt und dann weitere Namen erzeugt. Das war nicht atomar, und man konnte sich da herein schmuggeln und so das Dateisystem zerstören. Mkdir/rmdir fixen das.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

 
%d bloggers like this: