'ls' 命令是否有任何选项可以让我只看到目录?

pro*_*eek 107 ls utilities

有时,我只需要检查目录而不是文件。命令 ls 有任何选项吗?或者有没有这样做的实用程序?

编辑:我使用的是 Mac OS X,即使我有目录也ls -d给了我.

Ste*_*n D 123

我知道已经有一个选定的答案,但是您可以通过以下方式获得请求的行为ls

ls -ld -- */
Run Code Online (Sandbox Code Playgroud)

(请注意,'--' 标记参数的结尾,防止以连字符开头的文件夹名称被解释为进一步的命令选项。)

这将列出运行它的当前工作目录中的所有非隐藏(除非您配置 shell 的 globs 以展开它们)目录(请注意,它还包括指向目录的符号链接)。要获取其他文件夹的所有子目录,请尝试:

ls -ld /path/to/directory/*/
Run Code Online (Sandbox Code Playgroud)

请注意,-l 是可选的。

  • 好的。我从来没有考虑过目录的末尾有一个隐式的`/`——但现在我看到你的回答是有道理的。毕竟,制表符完成总是添加它。 (6认同)
  • 当目录数量超过最大参数长度时,“find”也具有优势。 (2认同)

gvk*_*vkv 21

不,但是一个简单的find命令就可以做到:

find . -type d -depth 1
Run Code Online (Sandbox Code Playgroud)

或者 grep

ls -F | grep /
Run Code Online (Sandbox Code Playgroud)

如有必要,您可以为其中任何一个设置别名。

  • 在 Ubuntu 14.04 上它是 `-maxdepth 1`。另外`find`想让我改变顺序:`find。-maxdepth 1 -type d` (9认同)

小智 8

我喜欢实用程序来概览目录结构。它在 MacPorts 和我尝试过的所有 Linux 发行版中都可用。

tree -d -L 2
Run Code Online (Sandbox Code Playgroud)

这将显示所有目录,两层深。


小智 8

我还需要查看隐藏目录,因此修改了上面的建议以满足我的需要

ls -d -- */ .*/
Run Code Online (Sandbox Code Playgroud)

(取决于外壳,也可能包括...