尝试查找当前目录中的所有 jpg 文件时出现“路径必须在表达式之前”错误

尝试查找当前目录中的所有 jpg 文件时出现“路径必须在表达式之前”错误

运行 find 命令查找当前目录中的所有 jpg 文件,如下所示

find . -maxdepth 1 -type f -name *.jpg

我收到以下错误:

 find: paths must precede expression: pic1 (1).jpg
 Usage: find [-H] [-L] [-P] [-Olevel] [-Dhelp|tree|search|stat|rates|opt|exec] [path...] [expression]

我不知道那到底是什么问题。

答案1

总结总是在 find: 中引用通配符find . -maxdepth 1 -type f -name "*.jpg"(注意"周围的字符*)。

在你的情况下,shell 正在解释*.jpg(注意字符*)并尝试匹配当前目录中以 结尾的文件名.jpg。有一个名为的文件pic1 (1).jpg,因此该文件名替换*.jpg。shell 向系统发出的命令变为

find . -maxdepth 1 -type f -name 'pic1 (1).jpg'

要深入了解,请尝试使用 跟踪原始命令strace。实际执行的是:

touch foo.jpg bar.jpg
strace find . -maxdepth 1 -type f -name *.jpg 2>&1 | grep jpg
execve("/usr/bin/find", ["find", ".", "-maxdepth", "1", "-type", "f", "-name", "bar.jpg", "foo.jpg"], [/* 62 vars */]) = 0
...

相关内容