Больше, или найдите более интенсивно использующими ресурсы в нахождении количества раз, которое объект перечисляет в файле?

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

Команда просто была бы grep -r shirt /path/to/girl/

Мне также нравится добавлять две опции, которые пропускают файлы, что я знаю, что не интересуюсь: --binary-files=without-match и --devices=skip.

0
13.04.2017, 15:36
3 ответа

Вам не нужно 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

также это просто даст количество случаев на файл а не общее количество

5
28.01.2020, 02:14
  • 1
    Это хорошо для знания также! Путем мне первоначально преподавали перерыть файлы, был при помощи more и передача по каналу в grep. Я никогда не использовал grep такая же большая автономная команда. положительная сторона –  SirCobalt 04.05.2012, 18:36

Я не имею "твердых данных", но рассматриваю это.

more (примитивный) фильтр для пролистывания текста одно экранное за один раз. Это полно решимости, должен использоваться в интерактивном режиме "для просмотра crt". Таким образом даже при том, что Вы отправляете вывод в a pipe, это все еще использует память и ресурсы ЦП для отображения каждого файла Вам с функциями фильтрации more предложения.

Это было бы более корректно в Вашем примере для использования cat вместо more. Продвинутый далее, Ваша команда в качестве примера может быть сделана еще более эффективной путем отбрасывания дополнительного шага прохождения через программы фильтрации и иметь grep непосредственно переройте файлы (вместо того, чтобы передать вывод по каналу к нему).

В отношении find причем команда медленнее, find также пересекает структуру каталогов, начинающую с . тогда как more только продолжает работать "file_name*" в текущем рабочем каталоге.

1
28.01.2020, 02:14
  • 1
    Спасибо за информацию! Я никогда действительно знал различие от команд такой как more и cat, таким образом, это очень полезно. –  SirCobalt 04.05.2012, 18:32
  • 2
    Нет cat не более корректно, это столь же бесполезно как more. Можно просто дать файлы для обработки как аргументы grep. grep abc *.txt. Нет никакой потребности включить дополнительное также. –  Matteo 04.05.2012, 18:33
  • 3
    @Matteo. –  George M 04.05.2012, 18:38

Это только на первый взгляд походит на попытку для бесполезного использования премии кошки, но если мы кошка все файлы, прежде, чем вызвать grep:

cat *.txt | grep -ci abc  

grep считает сумму для Вас. Так как Вам нравится пересекать подкаталоги (Вам нравится, не так ли?), можно сделать это там также:

find -name "*.txt" -exec cat {} + | grep -ci abc
1
28.01.2020, 02:14

Теги

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