find . \( -name "_*" -or -newer while2 \) -type f -print
在上面的linux命令中,为什么要引用_ *?
答案 0 :(得分:9)
首先,shell扩展所有未引用的*以匹配本地目录中的文件名。
之后,shell运行带有该文件名列表的find
命令。
通常,您不希望shell在本地目录中执行'*'globbing。通常,您将find命令用于在其他目录中进行文件名匹配。
在运行命令之前,shell还有其他一些功能。 $ VARIABLE替换就是其中之一。
答案 1 :(得分:5)
为什么要引用_ *?
如果不是,您的shell可能会扩展*
以替换当前目录中的文件。那可能不是你想要的。
答案 2 :(得分:2)
如果你不引用它,shell(bash?)会尝试扩展。如果在当前目录中有任何以“_
”开头的文件,您将得到类似的内容:
find . \(-name _somefile _someother _file3 .... -or -newer while2 \) -type f -print
肯定不是你想要的。我总是引用模式,只是为了确保shell不会弄乱它们