Обучение использовать Ctrl-R и Ctrl-S позволяет легко искать команды, которые Вы ищете в истории, и Вы уже нашли, что переменная среды HISTCONTROL проигнорировала дубликаты и изменила сайт файла истории удара.
Я обычно делаю многих Ctrl-R, сопровождаемый Ctrl-E и изменяющий некоторые параметры, если я пропустил найденную команду путем удара Ctrl-R слишком много раз, Ctrl-S к спасению.
Это - поведение, показанное grep -c
.
Вероятно, у Вас есть файл, имя которого запускается с -
и содержит a c
символ и Вы используете GNU grep, не устанавливая POSIXLY_CORRECT
переменная среды.
Использование:
grep -- delete *
или лучше:
grep delete ./*
--
отмечает конец опций так, чтобы то имя файла не рассматривали как опцию (с POSIX grep, это не было бы начиная с неопции delete
аргумент отметил бы конец опций), но он не решит проблему названного файла -
. grep delete ./*
более устойчиво, но имеет недостаток вывода дополнительного ./
для соответствия файлам (хотя это можно считать премией, так как это помогает определить имена файлов, которые содержат символы новой строки).
Используя grep -l
Вы только получите файлы, которые содержат по крайней мере одно соответствие.
Вам нужна информация о сколько соответствий, там находятся в файле вообще? Поскольку Вы могли пропустить использование -c
который используется для подсчета количества соответствий в файле.
править: И как колдун сказал использование -I
подавить соответствия в двоичных файлах могло также быть хорошей идеей.
Добавить
| grep -v ':0$'
Не очень изящный, но я думаю, сделает задание.
Добавление -l
к Вашей команде даст, Вы только соответствуете, но она также подавит количество печати соответствий для каждого файла.
grep -v ':0$'
таким образом, только те, которые в конце строки, подобраны (однако, grep -l
подход намного лучше, пока Вам не нужны количества строки)
– mreithub
22.11.2012, 14:17
grep -rIcH 'string'. | grep -v ':0$'
-r
Рекурсивные подкаталоги. -I
Игнорировать бинарные файлы(спасибо @tongpu , чернокнижник). -c
Показать количество совпадений. Раздражает, включает в себя 0 -файлов count. -H
Показать имя файла, даже если это только один файл. 'string'
здесь идет ваша строка. .
Начать с текущего каталога. | -v ':0$'
Удалить 0 -файлов count.(спасибо @LaurentiuRoescu)(Я понимаю, что OP был непреднамеренно -c подсчетом, но google (grep nonzero count )попадает сюда.)
Подобно ответу Лаурентиу, вы также можете использовать листинг -l
в качестве входных файлов для grep:grep -r "pattern" -c $(grep -rl "pattern")
Это позволяет сохранить окраску grep, но делает то же самое в фоновом режиме