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