По умолчанию xargs
множество строк своего ввода и передаст их указанной команде. Например:
echo -e 'line 1\nline 2\nline 3' | xargs echo
результаты в
line 1 line 2 line 3
Поскольку аргументы отправляются одной команде echo (в пределах длины командной строки).
Иногда вы хотите использовать замещающую строку, чтобы поместить аргументы где-то еще в команде, а не в конец:
echo -e 'line 1\nline 2\nline 3' | xargs -Ix echo x DONE
line 1 DONE
line 2 DONE
line 3 DONE
Теперь xargs заменяет только один аргумент на каждый вызов эха, потому что, как говорится на странице руководства, "-I подразумевает -L 1 ...". Это, вероятно, правильное поведение для типичного случая, но есть ли способ переопределить его, поэтому я получаю line 1 line 2 line 3 DONE
в качестве вывода?
Обратите внимание, что мой пример только иллюстративный - мне не очень интересны не-xargs способы решения этой проблемы.