特定のファイルまたはディレクトリのさまざまなパスに多くのシンボリックリンクを作成しました。作成されたシンボリックリンクのパス(場所)の一覧が必要です。
多くのディレクトリに~/Pictures
ディレクトリのシンボリックリンクを作成しました。 ~/Pictures
ディレクトリへのすべてのシンボリックリンクをリストするにはどうすればよいですか?
それは可能ですか?はいの場合、どのように?
以下に例を示します。
find -L /dir/to/start -xtype l -samefile ~/Pictures
または、多分良い:
find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null
Permission denied
、Too many levels of symbolic links
、またはFile system loop detected
のようないくつかのエラーを取り除くには、find
が適切な権限やその他の状況がないときにそれらをスローします。
-L
-シンボリックリンクをたどります。
-xtype l
-ファイルはシンボリックリンクです
-samefile name
-ファイルはname
と同じiノードを参照しています。 -L
が有効な場合、シンボリックリンクを含めることができます。
注:
-xtype l
で小文字のLを使用します。-xtype
は-type
です。非常に簡単、オプション-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.
注:シンボリックリンクは、リモートシステム(ファイルを共有している場合)を含む任意の場所に配置できるため、すべてを見つけることができない場合があることに注意してください。
これを試して :
ls -i ~/
277566 Pictures
find . -follow -inum 277566
(同じinode numberのディレクトリを検索)
すべてのシンボリックリンクパスが表示されます。
私はこのワンライナーが最も好きです:
find . -maxdepth 1 -type l -exec readlink -f '{}' \;
参照:
https://unix.stackexchange.com/questions/21984/list-symlinks-in-current-directory