ls _not_ 符号链接的所有内容

Rob*_*ino 13 ls bash symlink

ls没有办法显示否定条件,例如“所有不是符号链接的文件”?我在项目目录中经常使用后者,但其他否定也很有用。

目前,我的研究仅导致为“like”创建一个别名:

find . -maxdepth 1 ! -type l | sort # (...)
Run Code Online (Sandbox Code Playgroud)

但显然这种方式我没有得到 的着色ls,列格式等......

我有时使用 OS X 10.8.2 上的 Bash v3 和穿山甲上的 Bash v4。

Ran*_*832 15

sort使用 ls而不是管道它。

find . -maxdepth 1 \! -type l -exec ls -d {} +

find . -maxdepth 1 \! -type l | xargs ls -d
Run Code Online (Sandbox Code Playgroud)

如果您使用 zsh shell,您可以使用它们的不可移植的 glob 扩展:

ls -d *(^@)
Run Code Online (Sandbox Code Playgroud)

  • @Robottinosino `+` 使其全部发送到单个 `ls` 命令,而不是为每个文件单独运行它(这样 ls 可以执行列和排序)。我逃过了!因为它对于某些 shell 来说是一个特殊字符,即使您的似乎可以接受它。 (3认同)
  • @Robottinosino 用 zsh 可以做的事情进行编辑。我不认为 bash 可以做到这一点。 (2认同)