Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Полученные в результате сбора данные передаются по цепочке как аргумент. В общем случае синтаксис утилиты**** xargs для Linux выглядит так:
xargs [-l число] [-I зам_цеп] [-n число] [-t] [-p] [-x] [-s размер] [-e [лконф_цеп]] [команда [начальный_аргумент…]]Один из самых простых и понятных примеров — удаление файлов по списку, собранному командой find. Такая процедура необходима, например, для удаления файлов конкретного типа (временных, дублей и т.д.). Чтобы сделать это автоматически по результату поиска, следует передать утилите xargs список удаляемого содержимого, сгенерированного find. Приведем команду для расширения *.sh:
ls
one.sh one.py two.sh two.py
find . -name "*.sh"| xargs rm -rf
ls
one.py two.pyПри желании провести такую процедуру можно и без xargs:
find . -name "*.sh" -exec rm -rf '{}' \Правда, приведенная команда может не сработать для файлов, имя которых содержит хотя бы один пробел. Решение проблемы есть: для команды find — это опция print0, для утилиты xargs — -0. Их применение позволяет заменить разделитель по умолчанию (перенос строки на нуль-символ). Пример:
find . -name "*.sh" -print0 | xargs -0 rm –rf
find /tmp -name "*.tmp"| xargs rmПоследняя команда нацелена на удаление всех временных файлов.
Еще одна популярная операция — архивация данных, всех находящихся в каталоге или отдельно взятых (например, по расширению). Первое будет выполнено по команде:
find . | xargs -p -l gzipВторой пример показывает, как сжать все файлы с расширением .sh:
find . -name "*.sh" | xargs tar -zcf pl.tar.gzНужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.