为什么命令 `ls -d` 只打印 `.` 目录?

为什么命令 `ls -d` 只打印 `.` 目录?

我尝试过man ls,然后我得到了

-d, --directory

列出目录条目而不是内容,并且不取消引用符号链接

正如手册所说,-d意味着列出所有目录,但是当我输入时,ls -d 我得到了

drwxr-xr-x 35 *user group* 4.0K *date* 00:16 .

答案1

因为ls默认情况下,引用当前目录。毕竟,这是最常见的用例:列出当前目录中的文件。

“-d”标志仅表示“不列出目录中的文件,仅列出目录本身”。

答案2

如果您只想列出当前目录中的(非隐藏)目录,请尝试使用find如下所示:

find . -maxdepth 1 -type d -not -name "\.*"

在哪里:

  • -type d仅关注目录(这是我认为您需要的)
  • -name "\.*"搜索隐藏文件(\是为了转义.字符)
  • -not取消对隐藏文件的搜索,因此您正在搜索非隐藏文件
  • -maxdepth 1避免进入更多子目录

相关内容