この問題現在のディレクトリ内のディレクトリの検索について説明します。解決策は基本的に次のとおりです。
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'
これにより、すべてのシンボリックリンクファイルが再帰的に一覧表示されます。また、指す実際のファイルも表示されます。