web-dev-qa-db-ja.com

シンボリックリンク:このファイルにリンクするすべてのファイルを検索します

こんにちは、Linuxでこれを行う必要があります。

  • 指定:ファイル名「foo.txt」
  • 検索:「foo.txt」へのシンボリックリンクであるすべてのファイル

どうやるか?ありがとう!

101
lukmac

foo.txt,と呼ばれる特定のファイルへのリンクを探している場合、これが唯一の良い方法です。

find -L / -samefile path/to/foo.txt

一方、anyという名前のファイルへのリンクを見つけようとしている場合は、foo.txtという名前になります。

find / -lname foo.txt

または

find . -lname \*foo.txt # ignore leading pathname components
120
DigitalRoss

ファイルのiノード番号を見つけてから、同じiノード番号を持つすべてのファイルを検索します。

$ ls -i foo.txt
41525360 foo.txt

$ find . -follow -inum 41525360

別の方法として、lnamefindオプションを試してみてください。 a -> ../foo.txt

$ find . -lname /path/to/foo.txt
19
dogbane

壊れたシンボリックリンクを検索するときにも便利なsymlinksユーティリティを使用することを好みます。インストール方法:

Sudo apt install symlinks

現在のフォルダーとサブフォルダー内のすべてのシンボリックリンクを表示します。

symlinks -rv .
  • -r:再帰的
  • -v:verbose(壊れたものだけでなく、すべてのシンボリックリンクを表示します)

特定のシンボリックリンクを見つけるには、単にgrep

symlinks -rv . | grep foo.txt
2
Nik