web-dev-qa-db-ja.com

特定のファイル用に作成されたすべてのシンボリックリンクを見つけて一覧表示する方法は?

特定のファイルまたはディレクトリのさまざまなパスに多くのシンボリックリンクを作成しました。作成されたシンボリックリンクのパス(場所)の一覧が必要です。

例:

多くのディレクトリに~/Picturesディレクトリのシンボリックリンクを作成しました。 ~/Picturesディレクトリへのすべてのシンボリックリンクをリストするにはどうすればよいですか?

それは可能ですか?はいの場合、どのように?

52
Avinash Raj

以下に例を示します。

find -L /dir/to/start -xtype l -samefile ~/Pictures

または、多分良い:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

Permission deniedToo many levels of symbolic links、またはFile system loop detectedのようないくつかのエラーを取り除くには、findが適切な権限やその他の状況がないときにそれらをスローします。

  • -L-シンボリックリンクをたどります。

  • -xtype l-ファイルはシンボリックリンクです

  • -samefile name-ファイルはnameと同じiノードを参照しています。 -Lが有効な場合、シンボリックリンクを含めることができます。

注:

  • 数字の1ではなく、-xtype lで小文字のLを使用します。
  • MacOS/Darwinでは、-xtype-typeです。
41
Radu Rădeanu

非常に簡単、オプション-lnameを使用します:

find / -lname /path/to/original/dir

man findから:

-lname pattern
       File is a symbolic link whose contents match Shell pattern pattern.  The
       metacharacters do not treat `/' or `.' specially.  If the -L option or the
       -follow option is in effect, this test returns false unless the symbolic link
       is broken.

:シンボリックリンクは、リモートシステム(ファイルを共有している場合)を含む任意の場所に配置できるため、すべてを見つけることができない場合があることに注意してください。

7
Abdennour TOUMI

これを試して :

ls -i ~/

277566 Pictures

find . -follow -inum 277566(同じinode numberのディレクトリを検索)

すべてのシンボリックリンクパスが表示されます。

2
nux
0
B.Kocis