grep
стандартный инструмент для поиска шаблона в файлах. Это имеет опцию для поиска рекурсивно, что означает, находит ли это каталог, это входит и ищет во всем там.
Команда просто была бы grep -r shirt /path/to/girl/
Мне также нравится добавлять две опции, которые пропускают файлы, что я знаю, что не интересуюсь: --binary-files=without-match
и --devices=skip
.
Вам не нужно more
(или cat
) если у Вас есть список файла, Вам нужно к grep: просто дайте grep
файлы как аргумент (никакая потребность передать данные по каналу через второй инструмент):
grep -i abc *.txt | wc -l
Основное различие - это find
не только перечислит файлы в текущем каталоге (как расширение оболочки *.txt
) но это рекурсивно вызовет в подкаталоги также:
find . -name "*.txt" | xargs grep -i abc | wc -l
Во втором случае, если существуют некоторые *.txt
файлы в подкаталогах они также предоставляются как аргументы grep
команда.
И между прочим grep
имеет a -c
опция считать случаи (никакая потребность в wc
любой)
grep -c -i abc *txt
также это просто даст количество случаев на файл а не общее количество
Я не имею "твердых данных", но рассматриваю это.
more
(примитивный) фильтр для пролистывания текста одно экранное за один раз. Это полно решимости, должен использоваться в интерактивном режиме "для просмотра crt". Таким образом даже при том, что Вы отправляете вывод в a pipe
, это все еще использует память и ресурсы ЦП для отображения каждого файла Вам с функциями фильтрации more
предложения.
Это было бы более корректно в Вашем примере для использования cat
вместо more
. Продвинутый далее, Ваша команда в качестве примера может быть сделана еще более эффективной путем отбрасывания дополнительного шага прохождения через программы фильтрации и иметь grep
непосредственно переройте файлы (вместо того, чтобы передать вывод по каналу к нему).
В отношении find
причем команда медленнее, find
также пересекает структуру каталогов, начинающую с .
тогда как more
только продолжает работать "file_name*" в текущем рабочем каталоге.
more
и cat
, таким образом, это очень полезно.
– SirCobalt
04.05.2012, 18:32
cat
не более корректно, это столь же бесполезно как more
. Можно просто дать файлы для обработки как аргументы grep
. grep abc *.txt
. Нет никакой потребности включить дополнительное также.
– Matteo
04.05.2012, 18:33
Это только на первый взгляд походит на попытку для бесполезного использования премии кошки, но если мы кошка все файлы, прежде, чем вызвать grep:
cat *.txt | grep -ci abc
grep считает сумму для Вас. Так как Вам нравится пересекать подкаталоги (Вам нравится, не так ли?), можно сделать это там также:
find -name "*.txt" -exec cat {} + | grep -ci abc
more
и передача по каналу вgrep
. Я никогда не использовалgrep
такая же большая автономная команда. положительная сторона – SirCobalt 04.05.2012, 18:36