在命令"ls -d*/"中使用"*/"列出目录的任何原因?

XuZ*_*ing 4 linux bash shell

我知道还有其他一些方法可以做同样的事情,比如

ls -l | grep "^d"
Run Code Online (Sandbox Code Playgroud)

要么

ls -F | grep "/$"
Run Code Online (Sandbox Code Playgroud)

我只是好奇在"ls -d"之后添加"*/"的原因.为什么简单地使用"ls -d"不起作用?它背后是否有任何故事或棘手的东西?

lxo*_*xop 6

添加-d标志只是简单地指示ls列出目录条目而不是其内容.该*ls扩展到当前目录中的所有条目,这两个文件并显示目录.因此,ls -d *将列出此目录中的所有条目,而不扩展子目录.但是如果你使用*/,那么bash扩展它只包括这个目录中的目录.但只是ls */,所有目录都将被扩展.添加-d标志可以防止这种情况,并且您只获得此目录中的目录.

  • “-d, --directory 列出目录条目而不是内容,并且不取消引用符号链接”这是我在“ls”的 man 中找到的内容。我认为它描述得不好。“不扩展子目录”应该是真正的含义。 (2认同)