печать совпадающих строк при поиске всех файлов в каталоге

422
John Kube

Я ищу в файлах Java какое-то вхождение фразы:

находить . -имя '* .java' | xargs grep -l 'строка'

Как изменить эту команду, чтобы печатать в оболочку все строки, содержащие совпадение?

1
Попробуйте использовать `ack`: http://betterthangrep.com/ Dennis Williamson 14 лет назад 0

4 ответа на вопрос

2
Steve McKay
find . -name '*.java' | xargs grep 'string'  find . -name '*.java' | xargs grep -H 'string' # if you want filenames too 
Или для обработки пробелов в именах файлов: найти. -name '* .java' -print0 | xargs -0 grep 'string' CoverosGene 13 лет назад 0
0
user31894
grep -HR "string" *.java 
0
Andy Lester

Попробуйте использовать ack, доступный на betterthangrep.com

ack string --java 
0
Ole Tange

Если ваши имена файлов содержат пробел, 'или' вы должны посмотреть на GNU Parallel www.gnu.org/software/parallel/

find . -name '*.java' | parallel grep 'string' 

В зависимости от вашей системы это может работать быстрее, чем последовательный grep, так как он может использовать несколько процессоров. Тем не менее, часто скорость диска будет ограничивающим фактором.

Посмотрите вступительное видео для GNU Parallel: http://www.youtube.com/watch?v=OpaiGYxkSuQ

Похожие вопросы