ls -d 没有按照我说的去做

Rey*_*Kev 2 command-line ls

Ubuntu 14.04 LTS 直机,没有双启动或任何东西。

我在~/scratch 我只想要一个目录列表。

tree -dL 1
Run Code Online (Sandbox Code Playgroud)

知道了!

man ls 说:

-d List directories only instead of their contents.
Run Code Online (Sandbox Code Playgroud)

info ls 说:

-d List just the names of directories...
Run Code Online (Sandbox Code Playgroud)

显然,这不是我被告知它应该做的。我不明白什么?

hee*_*ayl 5

ls -d 将列出没有其内容的目录条目,它不用于仅显示目录中的目录条目。

一个例子会让你清楚:

$ tree
.
??? egg
??? spam
??? test
    ??? new
    ??? old


$ ls *
egg  spam

test:
new  old


$ ls -d *
egg  spam  test
Run Code Online (Sandbox Code Playgroud)

如你看到的 -d只需确保test未显示目录的内容。

本答案中所示,要仅显示目录条目,您可以使用*/. 在/*确保只有目录将显示:

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

这类似于:

$ for i in *; do [[ -d $i ]] && echo "$i"; done
test
Run Code Online (Sandbox Code Playgroud)