使用通配符时,“查找”实用程序不会输出所有文件

daf*_*ana 3 find wildcards

跑步:

$find . -name *.exe
Run Code Online (Sandbox Code Playgroud)

给出:

./MakeItSo_1.2.2/MakeItSo_1.2.2/MakeItSo.exe
./MakeItSo.exe
Run Code Online (Sandbox Code Playgroud)

但这些并不是目录中唯一的 exe 文件。例如,运行

$find . -name ATLTester.exe
Run Code Online (Sandbox Code Playgroud)

给出:

./Debug/ATLDmoVexaTester.exe
Run Code Online (Sandbox Code Playgroud)

Kam*_*ski 8

这是因为 shell globbing。尝试:

find . -name "*.exe"
Run Code Online (Sandbox Code Playgroud)

不引用时,*.exe扩展到*.exe当前目录中的所有文件,除非没有。碰巧你那里只有一个这样的文件,所以你的原始命令实际上是:

find . -name MakeItSo.exe
Run Code Online (Sandbox Code Playgroud)

如果*.exe当前目录中没有文件,则不会发生 shell globbing,find会从*.exe字面上获取参数,并且您的命令将按预期工作。另一方面,如果您有多个具有此扩展名的文件,它们都将作为参数提供给find,这将导致语法错误。