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

7

我知道还有其他的方法可以实现相同的功能,比如

ls -l | grep "^d"

或者

ls -F | grep "/$"

我对在ls -d后添加*/的原因很好奇。为什么简单地使用ls -d不能起作用?这背后是否有什么故事或诡计?

1
你尝试过去掉 */ 然后看看它有什么不同吗? - Xymostech
2
仅使用“ls -d”将仅返回本地目录“。”,无论您在哪里。 - XuZhangning
2个回答

10

添加-d标志只是指示ls将仅列出目录条目,而不是其内容。给ls*扩展到当前目录中的所有条目,包括文件和目录。因此,ls -d *将列出此目录中的所有条目,而不会扩展子目录。但如果使用*/,则bash会将其扩展为仅包括此目录中的目录。但只需使用ls */,所有目录都将被扩展。添加-d标志可以防止这种情况,并且您只能获得此目录中的目录。


2
“-d,--directory 列出目录项而非其内容,并且不解析符号链接。”这是我在“ls”的手册中找到的。我认为它没有很好地描述。“不展开子目录”应该是真正的含义。 - XuZhangning

4

如果您使用ls -d *,那么您将看到不仅是目录,还有文件。 如果您使用ls -d */,则只会看到目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接