Главная > Среда и утилиты > xargs

xargs -I: Преобразование входных элементов в аргументы команды

xargs — это мощная утилита, которая преобразует элементы, прочитанные из стандартного ввода, в аргументы для другой команды и выполняет ее. В частности, опция -I позволяет заменять каждую входную строку указанной строкой-заполнителем при выполнении команды, что очень полезно для безопасной обработки команд, когда имена файлов содержат пробелы или специальные символы.

Обзор

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 процесса параллельно.


Те же команды в категории