Мне нужно "| xargs -n 1 ", чтобы обойти xargs -I побочный эффект?

Я был удивлен, увидев это:

$ echo 1 2 3 4 5 | xargs -n 1 echo 1 2 3 4 5 $ echo 1 2 3 4 5 | xargs -n 1 -I FOO echo FOO 1 2 3 4 5 

То есть, использование флага -I имеет этот побочный эффект:

Кроме того, некотируемые пробелы не прерывают входные элементы; вместо этого разделитель является символом новой строки.

Поэтому обходной путь, который я вижу, таков:

 $ echo 1 2 3 4 5 | xargs -n 1 | xargs -n 1 -I FOO echo FOO 1 2 3 4 5 

Есть ли лучшее обходное решение?

Моя фактическая строка командной строки выглядит так:

 echo 102DRIFT 103DRIFT 104DRIFT 105DRIFT | xargs -n 1 | xargs -n 1 -I _DIR_ python process.py /SDcard/DCIM/_DIR_/ MyTrace.gpx 10 

(Ubuntu Trusty, если это необходимо).

2 Solutions collect form web for “Мне нужно "| xargs -n 1 ", чтобы обойти xargs -I побочный эффект?”

С GNU xargs вы можете использовать опцию -d :

 $ echo 1 2 3 4 5 | xargs -n 1 -d" " -I FOO echo FOO 1 2 3 4 5 

Я не думаю, что вам нужны xargs вообще:

 for DCIM in /SDcard/DCIM/10[2-5]DRIFT/ do python process.py "$DCIM" MyTrace.gpx 10 done 

Тем не менее, есть еще несколько вещей, которые вы можете сделать, кроме того:

 printf 10%dDRIFT\\n 2 3 4 5 | ...the rest... 

Или, если у вас нет кавычек во входных данных …

 IN | tr \ \\n | xargs ... the rest ... 
  • GNU параллельна чрезмерно медленной
  • Добавить суффикс ко всем файлам без определенного расширения и сохранить расширение файла
  • Как иметь очередь процессов в AIX, например, xargs с «--max-procs»?
  • xargs repl_str не расширяет второй заполнитель
  • Перемещение подкаталога в новый родительский каталог, где новое имя каталога увеличивается на 1
  • Как я могу предотвратить использование аргументов аргументов `xargs` в префиксах пробелами?
  • Найти изображения по размеру: find / file / awk
  • Понимание -regex с GNU find
  • Как удалить команды в истории, соответствующие заданной строке?
  • Есть ли способ манипулировать порядком аргументов stdin при использовании xargs, так же, как awk как $ 0, $ 1, $ 2 и т. Д.?
  • Получите дополнение к результату команды ls
  • Linux и Unix - лучшая ОС в мире.