it-swarm.com.de

Alle Dateien mit derselben Inode-Nummer auflisten?

Sagen wir mal, wenn ich ls -li in einem Verzeichnis bekomme ich folgendes:

12353538 -rw-r--r-- 6 me me 1650 2013-01-10 16:33 fun.txt

Wie die Ausgabe zeigt, hat die Datei fun.txt 6 harte Links; und die Inode-Nummer ist 12353538 .

Wie finde ich in diesem Fall alle festen Links für die Datei, d. H. Dateien mit derselben Inode-Nummer?

56
its_me
find /mount/point -mount -samefile /mount/point/your/file
60
Hauke Laging

Wenn Sie bereits die Inode-Nummer haben, können Sie die Option -inum Von find verwenden:

find /mount/point -xdev -inum 12353538

(Einige find Implementierungen unterstützen auch -mount als Äquivalent zu -xdev, obwohl nur -xdev Standard ist.).

55
scai

Mit Dank an die vorherigen Antworten.

Beachten Sie, dass die Binärdatei stat nicht nur den Inode, sondern auch den Mount-Punkt des entsprechenden Geräts bereitstellen kann. Das folgende Snippet verwendet dies, um den "üblichen" Anwendungsfall zu lösen:

fn_hardlinks() {
  declare target; target="$1" && shift
  [ ! -e "$target" ] && \
    { echo "[error] invalid target: '$target'" 1>&2; exit 1; }
  stat '/' 2>/dev/null 1>&2 || \
    { echo "[error] no functioning 'stat' binary found'" 1>&2; exit 1; }
  declare mount; mount="$(stat -c '%m' "$target")"
  declare inode; inode="$(stat -c '%i' "$target")"
  [ "x${mount[-1]}" != "x/" ] && mount+="/"
  find "$mount" -xdev -inum "$inode" 2>/dev/null
}

alias hardlinks=fn_hardlinks

und läuft:

> hardlinks ./resources/sphinx/gitinfo.py
/home/user/build/z-documentation/resources/sphinx/gitinfo.py
/home/user/build/sphinx-gitinfo/git/sphinx-gitinfo/gitinfo.py

PS: Achten Sie auf exit vs return, je nachdem, wie Sie dies verwenden!

0
elbeardmorez