我正在尝试查找以“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-*