这个问题讨论在当前目录中查找目录。解决方案基本上是:
ls -d */
这很好,但是我如何轻松列出符号链接?我必须使用类似的东西吗
find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)
或者有更简单的方法吗? ls 可以用来做这个吗?
答案1
在 zsh 中(N
在括号内添加以包含名称以 a 开头的符号链接.
):
echo *(@)
对于大多数find
实现:
find -maxdepth 1 -type l
符合 POSIX 标准:
find . -type d \! -name . -prune -o -type l -print
或者使用 shell 循环:
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'
这将递归列出所有符号链接文件。此外,它还显示它指向的实际文件。