Передайте несколько аргументов одной команде в произвольной позиции xargsLinux

Anonymous
Передайте несколько аргументов одной команде в произвольной позиции xargs

Сообщение Anonymous »

Я хочу выполнить команду, в которой аргументы представлены в виде одной строки, но они должны находиться в произвольной позиции. Например. в следующем примере я хочу, чтобы аргументы располагались перед любыми фиксированными аргументами, которые я написал после команды cp, то есть аргумента пути /somedir
Я хочу:

Код: Выделить всё

echo -n 'file1 file2 file3' | xargs -d ' ' -I{} cp {} /somedir
вести себя следующим образом:

Код: Выделить всё

cp file1 file2 file3 /somedir
но это не так...
Это также выглядит так: при включении опции -I{} параметр -d Параметр заставляет xargs вести себя по-другому. Похоже, что он пытается передать каждый аргумент в отдельный вызов команды, а не все в один.
Например, это работает:

Код: Выделить всё

echo -n 'file1 file2' | xargs -d' ' diff
Но это не получается

Код: Выделить всё

echo -n 'file1 file2' | xargs -d' ' -I{} diff {}
С ошибкой:

Код: Выделить всё

diff: missing operand after 'file1'
diff: Try 'diff --help' for more information.
diff: missing operand after 'file2'
diff: Try 'diff --help' for more information.
Как получить echo -n 'file1 file2 file3' | xargs -d ' ' -I{} cp {} /somedir, чтобы вести себя так, как задумано

Подробнее здесь: https://stackoverflow.com/questions/787 ... tion-xargs

Вернуться в «Linux»