TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #179 5.97K
Xargs в действии

Прошлые 2 поста дали нам достаточно информации про утилиту xargs, рассмотрим-ка несколько практических примеров.

Удаление файлов [1]

Одна из самых частых ситуаций использования xargs — удаление группы файлов, найденных при помощи find:


$ find . -type f -name "*.sh" -print0 | xargs -0 rm -rf


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

Удаление файлов [2]

Также можно удалить все файлы, кроме тех, которые подходят под определенный шаблон:


$ find . -type f -not -name '*.sh' -print0 | xargs -0 rm -rf


Тут мы рекурсивно удаляем все файлы, кроме ".sh" скриптов.

Переименование файлов

С помощью xargs можно осуществлять массовое переименование файлов.

Представим себе, что у нас есть группа файлов с расширением ".txt", и нам нужно произвести замену на ".sql".

Выполнить задачу можно при помощи xargs и потокового текстового редактора sed:


$ ls | sed -e "p;s/.txt$/.sql/" | xargs -L2 mv


Можно еще одним интересным способом поменять расширение файлам, используя cut:


ls | cut -d. -f1 | xargs -I{} mv {}.txt {}.sh


Изменение прав

С помощью xargs можно ускорить процесс смены прав на файлы и каталоги для пользователя/группы:


$ sudo bash -c "find ./ -group root -print | xargs chgrp xoadmin"


Удаление старых файлов

Вот так, например, можно удалить временные файлы, созданные более 7 дней назад:


$ find /tmp -type f -name '*' -mtime +7 -print0 | xargs -0 rm -f


Архивация файлов

Иногда может потребоваться вычленить группу файлов по "первичному признаку" и запихнуть все в архив. Следующий пример работает с ".png" файлами:


$ find ./ -name "*.png" -type f -print0 | xargs -0 tar -cvzf images.tar.gz


Форматирование вывода

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


$ cut -d: -f1 < /etc/passwd | sort | xargs


Команда sort выведет все в столбик, xargs, без параметров, передаст весь вывод команде echo, которая отобразит данные с пробелом, в качестве разделителя:


xoadmin backup bin ...


LinuxCamp
  • 👍 26
  • ✍ 7
  • ❤‍🔥 6
  • ❤ 4
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
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 →