当我输入时,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
。这不仅是隐藏文件,还包括当前目录和父目录,因此.*
通常不是一个好主意!