在当前目录中查找扩展名为 .c、.h 和 .java 的所有文件

在当前目录中查找扩展名为 .c、.h 和 .java 的所有文件

我正在尝试查找以“new-”开头的文件夹或其子目录中的所有文件(以 .c、.h 和 .java 结尾)。这是我当前的命令:ls -R | egrep '。[.]c$|。[.]h$|.*[.]java$' 我应该改变什么?

答案1

使用带有-o(或操作数)和(转义)括号的 find:

find $dir \( -name 'new*.java' -o -name 'new*.c' \)

从技术上讲,除非您添加其他过滤器,否则不需要括号。

您还可以使用正则表达式:

find . -regextype egrep -regex '.*/new-.*\.(java|c)'

(正则表达式应该匹配完整路径,因此.*/在开头。

答案2

这有点丑陋,但是这会输出当前目录及其子目录中所需的每个文件扩展名

find . -type f -name '*.c' && find . -type f -name '*.h' && find . -type f -name '*.java'

编辑:

如果您必须使用 ls 那么这可能就是您正在寻找的内容:

ls | grep -r '*.c\|*.h\|*.java' | grep new-*

相关内容