回答:
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
-prune
のオプション、あなたが使用する必要がありますfind topdir ! -name topdir -prune
。それ以外の場合、開始ディレクトリも無視されます。
あなたは使うべき-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'
これはシンボリックリンクのみを表示します。
sed -ne 's/@//p'
(そしてsed -ne 's/@$//p'
)も安全なテストではありません。最初のバージョンはls出力の@
どこかで誤検出が発生し、2番目のバージョンはファイル名が実際に終わるときに誤検出を返すためです@
man find
ショーをざっと見てください。と同じではありません。。。各ディレクトリのコンテンツをディレクトリ自体の前に処理する-d
-depth
-maxdepth
-depth