为什么`ls -d`只显示`.`?

为什么`ls -d`只显示`.`?

我只想目录

$ ls -d 
.
#get . on macos

centos 上也是一样

[root@iz2ze9wve43n2nyuvmsfx5z ~]# ls -d .
.

我找到解决方案:

[root@iz2ze9wve43n2nyuvmsfx5z /]# ls -d */
bin/   dev/  home/  lib64/       media/  opt/   root/  sbin/  sys/  usr/
boot/  etc/  lib/   lost+found/  mnt/    proc/  run/   srv/   tmp/  var/

但手册指定

   -d, --directory
          list directories themselves, not their contents

-d这样做的原因是什么?

答案1

ls -d适用于“此”目录,而不适用于您运行的位置中包含的目录ls

如果你只是在运行,这似乎很奇怪ls -d,但如果你想知道谁拥有这个目录,你可以ls -do只看到当前目录的所有者。

答案中有更全面的解释为什么 ls -d 还列出文件,它记录在哪里?

以及很多很好的见解ls * 、 ls ** 和 ls *** 的结果如果你真的想深入了解ls

答案2

ls实用程序列出了其命令行上给出的路径名参数。如果任何参数对应于目录,然后将显示该目录的完整内容。如果未给出参数,则ls列出当前目录,就像ls .使用过的一样。

为了能够列出目录(查看目录的目录条目),而不是其内容,您可以-d选择ls.有了它,您可以说出ls -d dir并获取目录条目dir,而不是其内容。

其本身只返回一个点(当前目录)的原因ls -d是它本质上与 相同ls -d .,即“给我当前目录的目录条目而不显示其内容”。


您的ls -d */命令正在执行的操作是显示当前目录中没有隐藏名称的所有目录的目录条目。你只得到目录由于/模式末尾的 。由于您使用-d,您不会获得这些目录的内容。

相关内容