答案1
始终用单引号引用正则表达式,因为 shell 将通配符扩展到文件。
所以:
ls -1 | grep '\.java$'
删除了不必要的通配符。
但解析ls
输出不是一个好主意,我建议find
:
find . -name '*.java'
递归搜索,或者
find . ! -name . -prune -name '*.java'
或者与 GNUfind
或兼容:
find . -name '*.java' -mindepth 1 -maxdepth 1
仅搜索当前目录。
在这种特殊情况下,由于深度 0 的唯一文件.
(我们指示开始查找文件的当前工作目录find
)与模式不匹配*.java
,因此您可以省略-mindepth 1
.