Хотя все ответы более или менее одинаковы, я не считаю их читаемыми с несколькими именами и логическими операторами между ними.
Я думаю, что это может быть более элегантным решением:
$ 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
, проверьте специфику вашей версии).