1

Я пытаюсь найти все файлы (заканчивающиеся на .c, .h и .java), которые находятся в папке или ее подкаталогах, начинающихся с "new-". Это моя текущая команда: ls -R | egrep '. с $ [.] |. ч $ [.] |.* [.] java $ 'Что я должен изменить?

2 ответа2

1

Используйте поиск с -o (или операндом) и (экранированными) скобками:

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

Технически скобки не требуются, если вы не добавите другие фильтры.

Вы также можете использовать регулярное выражение:

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

(регулярное выражение должно соответствовать полному пути, следовательно,. .*/ в начале.

0

Это немного уродливо, но это вывело бы каждое расширение файла, которое вы хотели в вашем текущем каталоге и его подкаталогах

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

РЕДАКТИРОВАТЬ:

Если вам нужно использовать ls, то это может быть то, что вы ищете:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .