列出当前目录中的符号链接?

列出当前目录中的符号链接?

这个问题讨论在当前目录中查找目录。解决方案基本上是:

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'

这将递归列出所有符号链接文件。此外,它还显示它指向的实际文件。

相关内容