Здесь есть несколько факторов:
Во-первых, используя -exec
, find создает новый процесс для grep
для каждого найденного файла.
Это можно сделать либо с помощью xargs, как в ответе Фелипе Альвареса (об этом я писал в блоге 5+ лет назад), либо с помощью -exec grep param1 {} +
(обратите внимание на +
вместо \;
). При использовании +
, «командная строка строится путем добавления каждого выбранного имени файла в конце; общее количество вызовов команды будет намного меньше, чем количество подходящих файлов» (из справочной страницы поиска)
Во-вторых, количество и размер файлов в /var
потенциально очень велики.
Можете ли вы добавить параметры в дополнение к -type f
чтобы ограничить количество файлов, которые вы ищете. find
есть варианты ограничения по времени, владельцу, шаблону имени и т. д. Например, вы можете сделать:
find /var -type f -name "access*log" -mtime -7 -exec grep param1 {} +
Это найдет файлы, измененные за последние семь дней с именами, начинающимися с "access" и заканчивающимися "log". Только те соответствующие файлы будут частью exec/grep.