1

Попытка исключить набор каталогов из находки сводит меня с ума! Что я хочу сделать, так это искать все файлы .java в дереве каталогов, но игнорировать все эти файлы в тестовых каталогах. Итак, я попробовал:

find . -name "*.java" -not -path "test"

а также

find . -name "*.java" -path "test" -prune

и несколько их вариантов. Однако - в зависимости от варианта - я либо получаю все файлы Java (включая файлы в тестовых каталогах), либо ни один из них. Я смотрел на другие вопросы здесь о SU (например, этот и этот), но они либо не касаются моей ситуации, либо я что-то упускаю.

Я использую GNU найти 4.2.27 (FWIW, на Centos 5,5 Вт / GNU Bash 3.2.25).

Изменить: Извините, я должен был изначально указать, что мне нужно сделать

-exec grep blah {} \;

так что передача через grep -v не подойдет для меня в этой ситуации.

2 ответа2

3

Это должно работать:

find -path '*/test/*' -prune -o -name '*.java' -exec grep blah {} \;
0

Консолидируя вышеупомянутые советы, он рекурсивно ищет файлы PHP, но исключает несколько каталогов, а затем архивирует их.

find -name locallibs -prune -o -name libs -prune -o -name wiki -prune -o -name tmp -prune -o -name '* .php' -exec zip all.zip {} \;

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