find - 在搜索路径中使用globbing

时间:2014-12-27 20:24:16

标签: find

我的问题很简单,我无法在谷歌上找到答案: 为什么我输入:

find *h

find *g

或星号后面的任何其他字符,结果是当前和子目录中的所有文件?

也是如此
find *

这很明显。我想星号(*)在这里作为开始搜索的目录,而不是要搜索的文件模式。所以*扩展为'当前目录中的所有目录'。因此,在这种情况下,它将搜索所有目录并查找所有文件,这是预期的行为。但是,如果我提供目录来开始搜索' * g'它还找到所有文件?即使没有单一的目录以' g' ?

1 个答案:

答案 0 :(得分:0)

您所描述的不是它的工作原理。 *g由shell扩展到当前目录中以g结尾的所有文件和目录,然后find作用于该列表。

正如@Barmar在评论中指出的那样,你所描述的内容听起来好像你在*g和shell中设置的nullglob选项没有匹配,这将导致没有匹配的通配符表达式扩展为空字符串。 (默认行为是保持未展开状态,这会导致来自find的错误消息。)