Обзор
xargs принимает стандартный ввод, передаваемый через конвейер (|), преобразует его в аргументы для другой команды и выполняет ее. Опция -I полезна при выполнении команды, заменяя каждую входную строку указанной строкой-заполнителем, что позволяет безопасно обрабатывать, особенно когда имена файлов содержат пробелы или специальные символы.
Основные возможности
- Преобразование входных элементов в аргументы для других команд
- Гибкое выполнение команд с использованием заполнителей (-I)
- Безопасная обработка имен файлов с пробелами и специальными символами
- Поддержка параллельной обработки (-P)
Основные опции
Команда xargs предлагает различные опции, но здесь представлены основные опции, часто используемые с опцией -I.
Заполнители и обработка ввода
Управление выполнением
Сгенерированная команда:
Комбинируйте команды.
Описание:
`xargs` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Различные примеры использования команды xargs с опцией -I.
Перемещение найденных файлов в указанный каталог
find . -name "*.txt" -print0 | xargs -0 -I {} mv {} /tmp/new_dir
Находит все файлы с расширением '.txt' в текущем каталоге и перемещает их в '/tmp/new_dir'. Безопасно обрабатывает имена файлов с пробелами.
Изменение содержимого файлов, содержащих определенную строку
grep -l "old_text" *.txt | xargs -I {} sed -i 's/old_text/new_text/g' {}
Изменяет 'old_text' на 'new_text' во всех файлах '.txt' в текущем каталоге. Опция -l выводит только имена файлов.
Удаление имен файлов с пробелами
find . -name "my file.txt" -print0 | xargs -0 -I {} rm {}
Безопасно удаляет файл 'my file.txt', имя которого содержит пробелы. Важна комбинация опций -print0 и -0.
Выполнение отдельной команды для каждого файла
ls *.log | xargs -I file_name echo "Processing file: file_name"
Выводит сообщение 'Processing file: [имя файла]' для каждого файла '.log' в текущем каталоге.
Советы и предостережения
Полезные советы и предостережения при использовании опции xargs -I.
xargs -I против xargs -0
Обе опции обрабатывают входные элементы, но делают это по-разному.
- -I (replace-str): Заменяет каждую 'строку' ввода на заполнитель. Поскольку разделение происходит по символам новой строки, могут возникнуть проблемы, если имена файлов содержат символы новой строки.
- -0: Предполагает, что входные элементы разделены нулевыми символами. Использование с 'find -print0' обеспечивает наиболее безопасную обработку, даже если имена файлов содержат пробелы, символы новой строки или специальные символы.
Осторожность при использовании с командой rm
Будьте предельно осторожны при использовании xargs для выполнения команды 'rm'. Вы можете случайно удалить важные файлы, поэтому сначала рассмотрите возможность проверки выполняемых команд с помощью 'echo' или опции '-t', или используйте интерактивные опции, такие как 'rm -i'.
Использование параллельной обработки (-P)
При обработке большого количества файлов или длительных задач использование опции '-P' для одновременного запуска нескольких процессов может значительно сократить время выполнения. Например, 'xargs -P 4' запускает 4 процесса параллельно.