Назад | Перейти на главную страницу

Найдите строку в папке и файл, из которого она пришла?

Я пытаюсь найти ключевые слова в моем каталоге / 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 сделает поиск без учета регистра (но медленнее)