TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #876 1.33K
🔎 xargs на практике

Когда в shell нужно обработать много файлов, хостов или строк, первый импульс обычно такой: написать for-цикл. Рабочий подход, но не всегда самый быстрый и удобный. Во многих таких задачах лучше использовать xargs - утилиту, которая берет поток данных из stdin и превращает его в аргументы для другой команды.

Проще говоря: нашли список объектов -> передали их в xargs -> массово обработали одной командой

▪️ Самый базовый пример:


cat hosts.txt | xargs ping -c 1


Но тут сразу важный нюанс: далеко не каждая команда умеет принимать много аргументов в таком виде. Поэтому на практике чаще используют -I или -n.
Например, пинговать хосты по одному:


cat hosts.txt | xargs -n1 ping -c 1


Здесь -n1 говорит: передавать по одному аргументу на запуск.

▪️ Полезный сценарий - массовая работа с файлами:


find /var/log -name "*.gz" | xargs rm -f


Но тут уже есть подводный камень: пробелы в именах файлов.
Безопасный вариант:


find /var/log -name "*.gz" -print0 | xargs -0 rm -f


Связка -print0 и xargs -0 - это почти обязательная привычка, если работаете с файлами.

▪️ Где xargs особенно хорош:

удаление и перемещение больших списков файлов;
массовый grep, chmod, chown;
обработка списков IP, URL, доменов;
запуск команд по данным из файла;
параллельное выполнение задач.

Например, проверить доступность списка хостов:


cat hosts.txt | xargs -n1 -P4 ping -c 1


-n1 - один хост на запуск
-P4 - до 4 процессов параллельно

Вот здесь xargs уже реально ускоряет работу. Особенно на больших списках, где последовательная обработка была бы слишком долгой.

▪️ Еще полезные примеры. Искать строку во множестве файлов:


find /etc -type f -name "*.conf" -print0 | xargs -0 grep -H "listen"


Или массово смотреть размер файлов:


find /backup -type f -print0 | xargs -0 du -h


Когда нужен шаблон с явной подстановкой, используют -I:


cat users.txt | xargs -I{} id {}


Здесь {} - место, куда подставляется значение из stdin.

▪️ Что полезно запомнить:

-n1 - по одному аргументу за запуск
-P4 - параллелить выполнение
-0 - безопасно работать с пробелами и спецсимволами
-I{} - явная подстановка значения в команду

#linux #xargs

🧑‍💻 NetworkAdmin
  • 👍 6
  • ❤ 3
More from @networkadminru
  1. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  2. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
  3. Sep 25, 2026🤩 Как расшифровать код ошибки Windows через certutil При установке обновлений Windows ран…
  4. Sep 23, 2026💻 Как жестко перезагрузить linux, когда обычный reboot уже не помогает Иногда сервер зави…
  5. Sep 22, 2026🌚 watch: простая динамическая диагностика в терминале Иногда не нужен отдельный мониторин…
  6. Sep 21, 2026👌 Firewall default deny: как внедрять без внезапного отрезания доступа Идея простая: разр…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →