xargs con falla con barras invertidas, de citas. Tiene que ser algo así como
ls -1 |tr \\n \\0 |xargs -0 -iTHIS echo "THIS is a file."
xargs -0 opción:
-0, --null
Input items are terminated by a null character instead of by whitespace, and the quotes and backslash are
not special (every character is taken literally). Disables the end of file string, which is treated like
any other argument. Useful when input items might contain white space, quote marks, or backslashes. The
GNU find -print0 option produces input suitable for this mode.
ls -1
pone término a los elementos, con caracteres de nueva línea, por lo tr
las traduce en caracteres nulos.
Este enfoque es unas 50 veces más lenta que la iteración de forma manual con for ...
(véase la respuesta Michael Aaron Safyan s) (3.55s vs 0.066s). Pero para otros comandos de entrada como localizar, buscar, leer desde un archivo (tr \\n \\0 <file
) o similar, debe trabajar de esta manera con xargs
.
'ls' hace automáticamente' -1' en una tubería. –
@Dennis, no se ve así: 'ls | xargs -L2 echo' y 'ls -1 | xargs -L2 echo' da dos salidas diferentes. El primero es todo en una línea. –
@Alex: obtengo el mismo resultado. –