xargs -P 4 запускает до 4 процессов параллельно вместо обработки файлов один за другим.

find /var/log -name "*.log" -print0 | xargs -0 -P 4 -I {} gzip {}

-print0 у find и -0 у xargs — пара для имён с пробелами и переводами строк: find разделяет вывод нулевым байтом вместо пробела, xargs так же его читает. Без этой пары имя файла с пробелом превратится в два отдельных аргумента.

-I {} подставляет каждый аргумент в шаблон команды. Если нужно ограничить число аргументов на один вызов — --max-args=2, полезно для команд, которые не умеют принимать длинный список сразу.

#linux #bash #sysadmin