Com GNU xargs , você pode usar a opção -d
:
$ echo 1 2 3 4 5 | xargs -n 1 -d" " -I FOO echo FOO
1
2
3
4
5
Fiquei surpreso ao descobrir isso:
$ 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
Ou seja, usar o -I
flag tem esse efeito colateral:
Also, unquoted blanks do not terminate input items; instead the separator is the newline character.
Portanto, a solução que vejo é:
$ echo 1 2 3 4 5 | xargs -n 1 | xargs -n 1 -I FOO echo FOO
1
2
3
4
5
Existe uma solução melhor?
Minha linha de comando real é assim:
echo 102DRIFT 103DRIFT 104DRIFT 105DRIFT | xargs -n 1 | xargs -n 1 -I _DIR_ python process.py /SDcard/DCIM/_DIR_/ MyTrace.gpx 10
(Ubuntu Trusty, se relevante).
Com GNU xargs , você pode usar a opção -d
:
$ echo 1 2 3 4 5 | xargs -n 1 -d" " -I FOO echo FOO
1
2
3
4
5
Eu não acho que você precise de xargs
:
for DCIM in /SDcard/DCIM/10[2-5]DRIFT/
do python process.py "$DCIM" MyTrace.gpx 10
done
Ainda assim, há outras coisas que você pode fazer além disso:
printf 10%dDRIFT\n 2 3 4 5 | ...the rest...
Ou, se você não tiver nenhuma entrada de cotação de qualquer maneira ...
IN | tr \ \n | xargs ... the rest ...