Передача результатов поиска в grep для быстрого исключения каталогов

Я успешно использую find для создания списка всех файлов в текущем подкаталоге, за исключением файлов в подкаталоге «кеш». Вот мой первый фрагмент кода:

find. -wholename './cach*' -prune -o -print

Теперь я хочу передать это в команду grep. Кажется, это должно быть просто:

find. -wholename './cach*' -prune -o -print | xargs grep -r -R -i "samson"

... но это возвращает результаты, которые в основном из каталога кеша. Я попытался удалить ссылку xargs, но это делает то, что вы ожидаете, запускает grep для текста имен файлов, а не для самих файлов. Моя цель — найти «samson» в любых файлах, которые не являются кешированным содержимым.

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

(Это в CentOS 5, кстати.)

10
задан eternalnewb 19 July 2012 в 16:41
поделиться