Answers:
问题是,您没有引用-name
参数。改为这样做:
find . -name '*.java'
说明
如果不带引号,则shell *.java
会将其解释为glob模式,并在将其传递给之前将其扩展为与glob相匹配的任何文件名find
。这样,例如,如果您foo.java
在当前目录中,则find
实际的命令行为:
find . -name foo.java
显然,它只会在当前目录中列出文件(除非您碰巧在树的后面有一些名称相似的文件)。
引用可防止全局扩展,并按find
原样传递命令行。
顺便说一句,如果glob匹配失败(*.java
当前目录中没有文件),您将获得两种行为之一,具体取决于您的shell设置为处理不匹配的glob (这由nullglob
Bash中的选项控制) , 例如):
find
将(顺便提醒您)会显示正确的行为。find
将不匹配的glob扩展为空字符串,则会抱怨它缺少的参数-name
。逃脱 *
find . -name \*.java