it-swarm.cn

使用“ ls”命令是否有只能看到目录的选项?

有时,我只需要检查目录而不是文件。命令ls有什么选择吗?还是有任何实用程序可以做到这一点?

[〜#〜] edit [〜#〜]:我使用的是Mac OS X,而ls -d 给我 .即使我有目录。

86
prosseek

我知道已经有一个选定的答案,但是您只需ls就可以得到请求的行为:

ls -ld -- */

(请注意,“-”标记参数的末尾,以防止将以连字符开头的文件夹名称解释为其他命令选项。)

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

ls -ld /path/to/directory/*/

请注意,-l是可选的。

96
Steven D

否,但是一个简单的find命令将执行此操作:

find . -type d -depth 1

grep

ls -F | grep /

然后,如有必要,您可以为任一别名。

16
gvkv

我还需要查看隐藏目录,因此已经修改了上面的建议以适合我的需求

ls -d -- */ .*/

(取决于命令行管理程序,其中可能还包括...

7
Neil Chandler

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

tree -d -L 2

这将显示所有目录,分为两个级别。

7
Claes Mogren

使用zsh(在macOS上默认情况下,它甚至曾经是/bin/sh),您将使用glob限定符根据文件类型选择文件:

  • 列出非隐藏目录:

    ls -d -- *(/)
    
  • 列出所有目录:

    ls -d -- *(D/)
    

    ...始终被排除,如果需要,可以分别添加)

  • 还包括指向目录的符号链接:

    ls -d -- *(D-/)
    

    -使得在符号链接解析后可以应用更多的限定符)。

3
Stéphane Chazelas

列出目录不只是一个选项...

但是您可以使用-d(列出目录本身,而不是目录内容)和*/来匹配目录本身:

ls -d */

并尝试对隐藏的点使用ls -d .*/

只是为了好玩,请尝试:ls -dls */。差异将显而易见!

参考:

0
marcio