grep, как подавить отображение несогласованного файла?

Я пытаюсь найти файлы, содержащие определенное слово, используя grep . В каталоге есть много файлов (> 500)

Команда, которую я запускаю

 $ grep 'delete' * 

Вывод

 validate_data_stage1:0 validate_data_stage2:0 validate_data_stage3:0 validate_data_stage4:0 validate_data_stage5:0 validate_input_stage1:0 validate_input_stage2:0 validate_input_stage3:0 validate_input_stage4:0 .... and hundred of such lines 

Это файлы, которые не содержат заданного совпадения. Я хочу, чтобы эти строки отображались в stdout. Я знаю ключ -q , но это будет подавлять полный вывод, чего я не хочу.

Как мне это сделать?

3 Solutions collect form web for “grep, как подавить отображение несогласованного файла?”

Это поведение, проявляемое grep -c .

Вероятно, у вас есть файл, имя которого начинается с - и содержит символ c и вы используете GNU grep без установки переменной среды POSIXLY_CORRECT .

Использование:

 grep -- delete * 

или лучше:

 grep delete ./* 

-- отмечает конец опций, так что это имя файла не будет считаться опцией (с помощью POSIX grep, это было бы не так, поскольку аргумент delete без опции означал бы конец опций), но он не будет обращаться проблема файла, называемого - . grep delete ./* более надежный, но имеет недостаток вывода дополнительного ./ для сопоставления файлов (хотя это может считаться бонусом, поскольку это помогает идентифицировать имена файлов, содержащие символы новой строки).

Используя grep -l вы получите только файлы, содержащие хотя бы одно совпадение.

Вам нужна информация о том, сколько совпадений есть в файле? Потому что вы можете пропустить с помощью -c который используется для подсчета количества совпадений в файле.

edit: И как чернокнижник сказал, что использование -I для подавления матчей в двоичных файлах также может быть хорошей идеей.

Добавить

 | grep -v ':0$' 

Не очень изящно, но я думаю, что это сработает.

Добавление -l в вашу команду даст вам только совпадения, но также будет подавлять количество копий совпадений для каждого файла.

  • перенаправление stdout. sh: ресурс временно недоступен
  • Труба не поднимает stdout
  • Как отправить stderr в stdout с помощью трубы в другую команду?
  • как перенаправить вывод ssh в файл
  • Как эти параметры qemu для перенаправления stdout работают?
  • Как ничего не делать вечно элегантным способом?
  • Как вывести stderr / stdout моего скрипта как в файл, так и в консоль?
  • журнал регистрации ufsdump при резервном копировании на stdout
  • Программа, которая может буферизовать stdin или файл
  • Как отображать вывод команды во время ее разбора?
  • Экран GNU: печать отдельного сеанса на стандартный вывод
  • Interesting Posts

    Нужен ли мне графический процессор NVidia локально, если я только синхронизирую проекты для создания удаленных сборок по целям?

    CUPS не показывает мне принтеры, кроме как с храброго браузера

    Как регистрировать процессы в демонах?

    Firefox и Thunderbird не могут разрешать имена хостов – все, что может

    Горячие клавиши Emacs в режиме ожидания

    Почему NetworkManager пытается контролировать скрипт интерфейса, который не существует?

    Tmpfs с переполнением на диске?

    Пользовательская установка кикстарта завершается, но машина не загружается

    Искать файлы ТОЛЬКО в подкаталоге

    Не удалось установить node.js в Debian

    Как создать действие «Выключить экран»?

    как восстановить ошибочно удаленную пользовательскую строку root в / etc / passwd

    Как запустить скрипт python с помощью Anaconda из командной строки?

    LXDE: привязка клавиш для одиночного ключа не работает

    «Осталось ждать корневого устройства» с одним ядром, но не с другим

    Linux и Unix - лучшая ОС в мире.