Я пытаюсь найти ключевые слова в моем каталоге / var / log, поэтому использую
cd / var / log cat * | grep ключевое слово
Я обнаружил, что строка находится в этом каталоге, и вижу строки, в которых она существует, но не знаю, из какого файла она пришла. Как мне найти строку и посмотреть файл, из которого она находится?
grep
может принимать имена файлов в качестве параметра.
cd /var/log
grep keyword *
И если вы выполняете grep из более чем одного файла за раз, имя файла, из которого была получена строка, будет напечатано вместе с найденной строкой.
Если вы указываете только 1 имя файла для grep, но все равно хотите отображать имя в файле, передайте -H
опция для grep - полезна, если вы используете подстановку (например, *.txt
) в командной строке и не знаю, в скольких файлах будет произведен поиск).
Если вы хотите также отображать номера строк, это -n
вариант.
find /var/log -type f | xargs grep -H
или
find /var/log -type f -name \*log | xargs grep -H
или (намного медленнее, чем xargs)
find /var/log -type f -exec grep -H {} \;
а для бонусных баллов grep -i сделает поиск без учета регистра (но медленнее)