我的问题很简单,我无法在谷歌上找到答案: 为什么我输入:
find *h
或
find *g
或星号后面的任何其他字符,结果是当前和子目录中的所有文件?
也是如此find *
这很明显。我想星号(*)在这里作为开始搜索的目录,而不是要搜索的文件模式。所以*扩展为'当前目录中的所有目录'。因此,在这种情况下,它将搜索所有目录并查找所有文件,这是预期的行为。但是,如果我提供目录来开始搜索' * g'它还找到所有文件?即使没有单一的目录以' g' ?
答案 0 :(得分:0)
您所描述的不是它的工作原理。 *g
由shell扩展到当前目录中以g
结尾的所有文件和目录,然后find
作用于该列表。
正如@Barmar在评论中指出的那样,你所描述的内容听起来好像你在*g
和shell中设置的nullglob
选项没有匹配,这将导致没有匹配的通配符表达式扩展为空字符串。 (默认行为是保持未展开状态,这会导致来自find
的错误消息。)