ls 命令的 d 选项究竟如何工作?

ls 命令的 d 选项究竟如何工作?

具有以下简单结构:

project
 main
  aaa
  aaa 
 test
  ddd
  ddd 
 pom.xml  <--- unique regular file

如果当前目录是project并且如果执行则ls出现命令

main  pom.xml  test

到这里一切都OK了。现在,根据man ls有关d选项存在:

   -d, --directory

          list directories themselves, not their contents

因此,执行时ls -d会出现命令:

.

为什么?老实说,我只期望目录而不是常规文件。例如

main test

问题

  • d该命令的选项到底如何ls工作?

额外问题:

  • 什么是不是他们的内容到底是什么意思?是关于每个目录的内部内容吗?

答案1

通常,当您ls输入目录时,会显示该目录的内容。

例如在你的例子中:

$ ls project
main  test
$ ls project/main
aaa  aab
$ ls project/test
dda  ddb

如果您使用该-d标志,则列出目录本身

$ ls -d project
project

这听起来很无聊,直到你看到像通配符这样的东西:

$ ls project/*
project/main:
aaa  aab

project/test:
dda  ddb

我们可以看到每个目录都匹配,我们得到了这些目录中的文件列表。

但是-d我们只获取目录名称本身,而不是目录内的文件。

$ ls -d project/*
project/main  project/test

答案2

ls 命令的 d 选项究竟如何工作?

ls -d是关于不再进一步遍历目录。ls不带参数相当于ls .,这就是为什么您只看到.输出。作为如何使用它的示例:

$ mkdir -p {foo,bar,baz}/dir
$ ls *
bar:
dir

baz:
dir

foo:
dir
$ ls -d *
bar  baz  foo

如果您想查看某些目录元数据(例如,使用ls -ld.

答案3

你问的是一个非常广泛的问题。但对您的困惑的简短回答是:默认值争论for  ls(当未指定时)是 .。当你ls没有选择地运行时,你会得到的内容.  当你跑步时ls -d,你会得到.

相关内容