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

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

跑步:

$find . -name *.exe

给出:

./MakeItSo_1.2.2/MakeItSo_1.2.2/MakeItSo.exe
./MakeItSo.exe

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

$find . -name ATLTester.exe

给出:

./Debug/ATLDmoVexaTester.exe

答案1

这是因为 shell通配符。 尝试:

find . -name "*.exe"

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

find . -name MakeItSo.exe

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

相关内容