Хотя все ответы более или менее одинаковы, я не считаю их читаемыми с несколькими именами и логическими операторами между ними.
Я думаю, что это может быть более элегантным решением:
$ find . -type f | grep -E "\.java$|\.cpp$|\.c$"
Давайте разберемся с этим
find . рекурсивно находит все файлы в текущем пути (при необходимости измените путь на другой)
-type f сужает поиск только по файлам (не слишком много прироста скорости, но все же ...)
| grep -E Я использовал это для получения распознавания grep или оператора (|) в Mac OS X, использующей grep FreeBSD, GNU grep в этом не нуждается (проверьте в вашем файле man).
- Регулярное выражение
"\.java$|\.cpp$|\.c$" включающее файлы, имена которых заканчиваются на .java , .cpp и .c (добавьте нужные)
Затем вы можете передать полученный список для дальнейшей обработки, например,
$ find . -type f | grep -E "\.java$|\.cpp$|\.c$" | xargs sed -i '' $'/s/\r$//'
В этом примере удаляется конец строки DRL /Windows CRLF для OS X /Linux LF (это также синтаксис OS X sed , проверьте специфику вашей версии).