为什么当路径为 . 和 ./* 时 find 命令的结果会不同?

为什么当路径为 . 和 ./* 时 find 命令的结果会不同?

当我输入时,find . -name "so*"我得到了以下所有结果:

./sort
./.cache/evolution/sources
./.config/evolution/sources
./.local/share/sounds 

但是当我打字时find ./* -name "so*"我只得到./sort

据我所知,当我.在命令中使用时,我要求在当前目录中查找以“so”开头的文件,但是当我使用./*它时,它只显示./sort文件而不显示隐藏文件,所以我想知道添加/*实际上做了什么以及它如何改变我的查询/指令。

答案1

find .表示从当前目录开始搜索。

find ./*表示在当前目录中搜索与*

但是,*shell 会对其进行扩展,因此它find会认为您确实输入了如下命令:

find ./sort ./another-dir ./another-file ./etc -name "so*"

您的观察是正确的。默认情况下,前导*会排除以 开头的文件或目录.,因此它们永远不会被 看到find。这不仅是隐藏文件,还包括当前目录和父目录,因此.*通常不是一个好主意!

相关内容