Обзор
xargs считывает данные из стандартного ввода, интерпретирует их как аргументы, разделенные пробелами или переводами строк, а затем передает их в качестве аргументов указанной команде для выполнения. Это особенно эффективно при использовании с командой find, позволяя выполнять пакетные операции над списком файлов.
Основные функции
- Преобразование данных из стандартного ввода в аргументы команды
- Ограничение количества аргументов при выполнении команды
- Поддержка параллельной обработки
- Безопасная обработка имен файлов, содержащих специальные символы
Основные опции
Основные опции команды xargs используются для настройки способа обработки ввода, управления выполнением команды и форматирования вывода.
Обработка ввода
Управление выполнением
Сгенерированная команда:
Комбинируйте команды.
Описание:
`xargs` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
xargs может гибко использоваться в различных сценариях. Ниже приведены несколько распространенных примеров использования.
Базовое использование: удаление нескольких файлов
echo "file1.txt file2.txt" | xargs rm
Передает имена файлов, полученные из стандартного ввода, в качестве аргументов команде rm для удаления.
Безопасное удаление файлов с помощью find
find . -name "*.bak" -print0 | xargs -0 rm
Использует find -print0 и xargs -0 для безопасного удаления файлов, даже если их имена содержат пробелы или специальные символы.
Выполнение команды для каждого файла (строка замены)
find . -name "*.log" | xargs -I {} mv {} {}.old
Выполняет команду mv для каждого найденного файла .log, изменяя расширение на .old.
Параллельное подключение к нескольким хостам по SSH
cat hostnames.txt | xargs -P 5 -I {} ssh {} "uptime"
Одновременно пытается установить 5 SSH-соединений к каждому хосту из файла hostnames.txt для проверки статуса uptime.
Запрос подтверждения перед выполнением
ls *.tmp | xargs -p rm
Перед удалением всех файлов .tmp в текущем каталоге запрашивает подтверждение для каждого файла.
Советы и предостережения
Советы и моменты, на которые следует обратить внимание при эффективном использовании xargs.
Безопасная обработка имен файлов
Поскольку имена файлов могут содержать пробелы, табуляции, переводы строк, кавычки и другие специальные символы, при использовании с командой find всегда используйте комбинацию `find ... -print0 | xargs -0 ...`. Это предотвращает такие проблемы, разделяя элементы нулевым символом.
- Всегда используйте `find -print0` в сочетании с `xargs -0`
- По умолчанию разделение происходит по пробелам, поэтому при наличии пробелов в именах файлов могут возникнуть проблемы
Осторожность при выполнении опасных команд
Будьте предельно осторожны при использовании xargs с командами, изменяющими систему, такими как rm, mv, chown. Рекомендуется использовать опцию `-p` для подтверждения перед каждым выполнением или опцию `-t` для предварительного просмотра выполняемых команд.
- Подтверждение перед выполнением с опцией `-p` (prompt)
- Просмотр выполняемых команд с опцией `-t` (trace)
- Сначала протестируйте с помощью `echo` и т.п., чтобы убедиться в правильности работы
xargs против цикла for
Для простых задач цикл for в оболочке может быть более интуитивным, но когда требуется обработать большое количество файлов/элементов, необходима параллельная обработка или превышен лимит длины командной строки, xargs является более эффективной и мощной альтернативой.
- Обработка большого количества файлов: `xargs` более эффективен по памяти
- Параллельная обработка: `xargs -P`
- Ограничение длины командной строки: `xargs` автоматически разделяет