为什么xargs -L产生正确的格式,而xargs -n不能?

eze*_*zon 6 unix linux shell whitespace xargs

考虑以下:

$ echo index.html* | xargs -L 1 ls -l
-rw-r--r-- 1 zeki zeki  17198 2011-05-03 23:18 index.html
-rw-r--r-- 1 zeki zeki  17198 2011-05-03 23:20 index.html.1
-rw-r--r-- 1 zeki zeki  17198 2011-05-03 23:21 index.html.2
-rw-r--r-- 1 zeki zeki 146589 2011-05-05 12:29 index.html.3
$ echo index.html* | xargs -n 1 ls -l
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:18 index.html
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:20 index.html.1
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:21 index.html.2
-rw-r--r-- 1 zeki zeki 146589 2011-05-05 12:29 index.html.3
Run Code Online (Sandbox Code Playgroud)

为什么-n选项会产生不正确的格式?为了以防万一,我在Ubuntu下使用bash.谢谢.

gee*_*aur 14

-L按线分开; echo不会按行而是按空格分隔其输出,因此ls -l会运行单个并将所有列格式化为一个组.

-n按参数分割; 在缺少-Lor 的情况下-0,分隔符是空格(可能通过引用修改),因此每个文件名都有自己的ls -l运行,并且独立运行无法协调列宽.