同じ inode 番号を持つすべてのファイルを一覧表示しますか?

同じ inode 番号を持つすべてのファイルを一覧表示しますか?

ls -liディレクトリ内で実行すると、次のようになります:

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

出力が示すように、ファイル楽しい.txtもっている6ハードリンクであり、inode番号は12353538

ファイルのすべてのハードリンク、つまり同じ inode 番号を持つファイルを見つけるにはどうすればよいですか?

答え1

基本的な前提は以下を使用することです:

find /mount/point -mount -samefile /mount/point/your/file

システムでは、findmnt次のようにマウント ポイントを導出できます。

file=/path/to/your/file
find "$(findmnt -o TARGET -cenT "$file")" -mount -samefile "$file"

/マウントされた各ファイルシステムで inode 番号が再利用されるため、ターゲット ファイルがそのファイルシステム上にない限り、そこから検索しないことが重要です。

答え2

すでに inode 番号を持っている場合は、find の-inumオプションを使用できます。

find /mount/point -xdev -inum 12353538

(一部のfind実装では-mountと同等の もサポートされますが、標準は-xdevのみ-xdevです)。

答え3

ffindから探偵キット削除されたファイル名も含め、inode のすべてのファイル名を見つけることができます。

例えば:

sudo ffind -a /dev/sda3 $(stat --format=%i ~/just_a_test)

収穫

* /home/me/empty_1
* /home/me/hard_link_to_empty1
/home/me/just_a_test
/home/me/hard_link_to_just_a_test

先頭に星印が付いているエントリは、以前のファイル名であり、現在は存在しません (ファイル名が変更されたか、削除されたため)。


$(stat --format=%i ~/just_a_test)ファイルの inode を取得するために使用します。

ファイル名のパーティションをプログラム的に取得するには(/dev/sda3前の例では)、次のようにします。df:

file=~/just_a_test; sudo ffind -a $(df -P "$file" | awk 'END{print $1}') $(stat --format=%i "$file")

答え4

以前の回答に感謝します。

statバイナリは inode だけでなく、対応するデバイスのマウント ポイントも提供できることに注意してください。以下のスニペットでは、これを使用して「通常の」使用ケースを解決します。

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

そして実行中:

> 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: これをどのように使用するかに応じて注意してexitくださいreturn

関連情報