ls -d 没有按照我指示执行

ls -d 没有按照我指示执行

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

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

tree -dL 1

知道了!

man ls说:

-d List directories only instead of their contents.

info ls说:

-d List just the names of directories...

显然,这并没有按照我所要求的那样做。我不明白什么?

答案1

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

举个例子你就会明白:

$ tree
.
├── egg
├── spam
└── test
    ├── new
    └── old


$ ls *
egg  spam

test:
new  old


$ ls -d *
egg  spam  test

正如您所见,-d只是确保目录的内容test不会被显示。

正如已经显示的这个答案,若要仅显示目录条目,可以使用*//后面的命令*确保仅显示目录:

$ ls -d */
test/

这类似于:

$ for i in *; do [[ -d $i ]] && echo "$i"; done
test

答案2

尝试一下这个: ls -d */ 它将列出当前目录中的目录

相关内容