Есть ли какая-нибудь утилита Unix, которая позволит мне создавать несколько файлов с небольшим набором текста? - PullRequest
6 голосов
/ 22 июня 2009

Прямо сейчас я делаю это много:

find * | grep py$ | xargs grep foo

Я помню, что есть какая-то утилита, которая делает это с меньшим набором текста, но какая?

ОБНОВЛЕНИЕ: Я предпочитаю использовать оболочку Bash, если это возможно.

Ответы [ 8 ]

14 голосов
/ 22 июня 2009

Я люблю Ack :

Что бы вы предпочли напечатать?

$ grep pattern $(find . -type f | grep -v '\.svn')

$ ack pattern

4 голосов
/ 22 июня 2009

Возможно, вам поможет ваша оболочка. Например, в zsh вы можете сделать

grep foo **/*.py

при условии, что число файлов .py не превышает максимально допустимое количество аргументов для команды (64 КБ?). Обратите внимание, что вы можете определить глобализацию файла, например

grep foo **/*.py(mh-5)

, который даст вам все, что изменилось за последние 5 часов.

3 голосов
/ 22 июня 2009

Вы пробовали ack .

2 голосов
/ 22 июня 2009

Это называется grep * wink *: -)

Все py в текущем каталоге

grep -R foo *.py

Все файлы в текущем и любом подкаталоге

grep -R foo .
2 голосов
/ 22 июня 2009

zsh имеет рекурсивное сглаживание, поэтому вы можете сделать

grep foo **/*.py

Смотри, ма, не найди:)

ОБНОВЛЕНИЕ: О, также, если вы делаете что-то много, это не повредит псевдониму или, конечно, напишите для него функцию

1 голос
/ 22 июня 2009
find . -name "*.py" -exec grep -H foo '{}' ';'
1 голос
/ 22 июня 2009
grep -r --include='*.py' foo *
0 голосов
/ 09 июля 2009

Я часто использую что-то очень похожее на вашу пару find / grep, хотя и с еще большим количеством условий - исключая, например, файлы в каталогах .svn. Я делаю это так много, что только что делал сценарии вокруг этих вызовов, так что я могу назвать «src-grep ...» и заставить его делать то, что вы делаете здесь. (Затем я добавил необязательное расширение для ряда строк контекста, которые должны передаваться флагу grep -C, если он есть, и отдельную версию для grep результатов для операторов определения.)

Это более полезно и быстрее, чем рекурсивный grep для меня.

...