【发布时间】:2009-03-14 15:31:43
【问题描述】:
找到 . \( -name "_*" -or -newer while2 \) -type f -print
在上面的linux命令中,为什么要引用_*?
【问题讨论】:
-
类似问题:stackoverflow.com/questions/18836/why-doesnt-find-find-anything>
标签: linux shell command-line
找到 . \( -name "_*" -or -newer while2 \) -type f -print
在上面的linux命令中,为什么要引用_*?
【问题讨论】:
标签: linux shell command-line
首先,shell 扩展所有不带引号的 * 以匹配本地目录中的文件名。
之后,shell 使用该文件名列表运行 find 命令。
通常,您不希望 shell 在本地目录中执行 '*' 通配符。一般情况下,你使用 find 命令在其他目录中进行文件名匹配。
shell 在运行命令之前还有其他几件事情要做。 $VARIABLE 替换就是其中之一。
【讨论】:
为什么要引用 _* ?
如果不是,您的 shell 可能会扩展 * 以替换为当前目录中的文件。这可能不是你想要的。
【讨论】:
如果你不引用它,shell (bash?) 会尝试扩展。如果当前目录中有任何以 '_' 开头的文件,您会得到如下信息:
find . \(-name _somefile _someother _file3 .... -or -newer while2 \) -type f -print
当然不是你想要的。我总是引用模式,只是为了确保 shell 不会弄乱它们
【讨论】: