É possível usar xargs para invocar um comando para que o último argumento do comando seja corrigido?
Minha tentativa:
printf '%s\n' a b c d | xargs -I{} echo {} LAST
acaba fazendo
echo a LAST
echo b LAST
echo c LAST
echo d LAST
Eu quero que xargs invoque
echo a b c d LAST
#fit as many as you can but always finish wiht LAST
É possível fazer isso, de preferência de forma portátil?
tl;dr; é assim que você pode fazer isso de forma portátil, sem
-I
e outras opções extravagantes quebradas:O problema com a
-I
opção é que ela está quebrada por design e não há como contornar isso:Mas eles provavelmente estão cobertos, porque é isso que o padrão diz:
E não diz nada sobre a interação com as opções
-n
e-d
, então eles são livres para fazer o que quiserem.É assim que é em um FreeBSD (mais antigo), menos inesperado, mas fora do padrão:
Não com
xargs
(sozinho). Se você tem uma lista de itens de tamanho imprevisível, comoxargs
saber desde o início (= primeiro elemento) qual elemento seria o último? Você precisará de algumas lógicas adicionais em torno dele para separar o elemento desejado dos outros.