使用 find 时“路径必须在表达式之前”是什么意思?

kay*_*kav 16 find

我想显示所有具有 .bak 扩展名的文件。

kaykav@ubu2:~/Documents$ ls
cdIndex1-60  met.bak  tem.bak
Run Code Online (Sandbox Code Playgroud)

我输入 cmd : $ find . -name *.bak

为此,我在正确的目录中。我收到以下消息:

查找:路径必须在表达式之前:tem.bak

这意味着什么?手册页没有帮助。

Moh*_*ati 25

尝试将其放在引号中:

find . -name '*.bak'

当您find . -name *.bak在该目录中简单地使用时,shell 将其扩展为find . -name tem.bak met.bak(即解释*为通配符)

  • @kaykav 当您运行 `find 时。-name *.bak`,第三个命令行参数 `*.bak`,在传递给 `find` 之前由 shell *扩展*。Shell 扩展会将其转换为当前目录中与它匹配的所有文件名的空格分隔列表,即名称由零个或多个字符 (`*`) 后跟 `.bak` 组成的所有文件。当您将 `*.bak` 括在引号中时,它会*转义* `*` 通配符,因此该表达式不会被展开传递。您也可以使用 `find 。-name \*.bak`。 (7认同)