这是正确的:
$ find . -name *main.o
./main.o
那么,为什么我找不到*.o
?
$ find . -name *.o
find: paths must precede expression: main.o
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
这是正确的:
$ find . -name *main.o
./main.o
那么,为什么我找不到*.o
?
$ find . -name *.o
find: paths must precede expression: main.o
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
可能有多个文件匹配
*.o
,而只有一个文件匹配*main.o
,因此,在第一种情况下,shell 扩展运行:这有效。在第二种情况下:
这就是你出错的原因。
为了防止这种情况,您应该
expression
在两个命令中都引用:将文件模式放在引号中。否则,* 会被 shell 扩展(在 find 看到它之前解析为文件列表),混淆 find。