-L
divisiones por líneas; echo
no separa su salida por líneas sino por espacios, por lo que un solo ls -l
se ejecuta y formatea todas las columnas como un grupo.
-n
divisiones por parámetros; en ausencia de -L
o -0
, el separador es un espacio en blanco (posiblemente modificado por comillas), por lo que cada nombre de archivo tiene su propio ls -l
ejecutar y no hay forma de que las ejecuciones independientes coordinen los anchos de columna.
El estándar POSIX exige:
-L
número
La utilidad se ejecutará para cada number
no vacío líneas de argumentos de la entrada estándar. La última invocación de utilidad será con menos líneas de argumentos si quedan menos de un número. Una línea se considera que termina con el primero a menos que el último carácter de la línea sea un <blank>
; un <blank>
final señala la continuación a la siguiente línea no vacía, inclusive.
-n
número
Invoque la utilidad usando tantos argumentos de entrada estándar como sea posible, hasta número (un entero decimal positivo) máximo de argumentos.
(Énfasis agregado). Desde echo *
produce una sola línea, xargs -L 1
simplemente alimenta todos los nombres de archivo a ls
a la vez, y solo entonces podrá ls
alinee bien las columnas.
(En otras palabras, su primer comando es equivalente a ls -l index.html*
, excepto que no maneja correctamente los nombres de archivo que contienen espacios en blanco.)