8

次の点を考慮してください。

$ 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

-n オプションを使用すると、フォーマットが正しくないのはなぜですか? 念のため、Ubuntuでbashを使用しています。ありがとう。

4

3 に答える 3

15

-L行ごとに分割します。echo出力を行ではなくスペースで区切るため、単一ls -lが実行され、すべての列がグループとしてフォーマットされます。

-nパラメータで分割します。-Lまたはがない場合-0、セパレーターは空白 (引用符で変更される可能性があります) であるため、各ファイル名は独自のls -lランを取得し、独立したランが列幅を調整する方法はありません。

于 2011-06-29T21:09:08.443 に答える
3

POSIX 標準では次のことが義務付けられています。

-L 番号

ユーティリティは、標準入力からの引数の空でないnumber 行ごとに実行されます。utility の最後の呼び出しは、残っている引数が number よりも少ない場合、より少ない行の引数で行われます。の最後の文字が<blank>;でない限り、行は最初の文字で終わると見なされます。末尾の<blank>信号は、次の空でない行まで続きます。

-n 番号

number (正の 10 進数) 引数まで、できるだけ多くの標準入力引数を使用して utility を呼び出します。

(強調が追加されました。)echo *単一行を生成するため、すべてのファイル名を一度にxargs -L 1フィードするだけで、列を適切に整列させることができます。lsls

ls -l index.html*(つまり、空白を含むファイル名を正しく処理しない点を除いて、最初のコマンドは同等です。)

于 2011-06-29T21:10:33.660 に答える