現在のディレクトリのシンボリックリンクを一覧表示しますか?

現在のディレクトリのシンボリックリンクを一覧表示しますか?

この問題現在のディレクトリ内のディレクトリの検索について説明します。解決策は基本的に次のとおりです。

ls -d */

大丈夫です。しかし、シンボリックリンクを簡単にリストするにはどうすればよいですか?次のようなものを使うべきですか?

find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)

それとももっと簡単な方法がありますか?これを行うために使用できますか?

答え1

zshで(N名前がaで始まるシンボリックリンクを含めるには括弧内に追加.):

echo *(@)

findほとんどの実装では、次のことを行います。

find -maxdepth 1 -type l

POSIX準拠:

find . -type d \! -name . -prune -o -type l -print

またはシェルループを使用してください。

for x in * .*; do
  if [ -h "$x" ]; then echo "$x"; done
done

答え2

Macではありませんが、

find . -maxdepth 1 -type l

私のために動作します。

答え3

-type代わりに、次のものを使用する必要があります-xtype

   -xtype c
          The same as -type unless the file is a symbolic link.  For  sym‐
          bolic  links:  if the -H or -P option was specified, true if the
          file is a link to a file of type c; if the -L  option  has  been
          given,  true  if  c is `l'.  In other words, for symbolic links,
          -xtype checks the type of the file that -type does not check.

デフォルト値-Pなので、-xtype オプションはシンボリックリンク自体ではなく結果ファイルを判別しようとします。実際に肯定的な結果を得ていますが、これはバグのようです。-P -xtype l結果自体がシンボリックリンクである場合にのみ(シンボリックリンクから)trueを返す必要があります。

また利用可能です。ls -FA | sed -ne 's/@//p'シンボリックリンクのみが表示されます。

答え4

現在のディレクトリでシンボリックリンクされたファイルのみを検索するには:

find . -type l -printf '%p -> %l\n'

これにより、すべてのシンボリックリンクファイルが再帰的に一覧表示されます。また、指す実際のファイルも表示されます。

関連情報