こんにちは。
xargs コマンドの空白文字区切り処理(word-splitting by spaces)について ls コマンドで試してみました1。
なお -J
オプションは POSIX を独自拡張したものです(GNU xargs は持っていません)。-J
と -n1
を合わせて指定した場合は -I
と同じ挙動のようです2。
$ ls file_a file_b
file_a file_b
$
$ echo file_a file_b | xargs ls
$ echo file_a file_b | xargs -L1 ls
$ echo file_a file_b | xargs -J% ls %
$ echo "file_a file_b" | xargs ls
$ echo "file_a file_b" | xargs -L1 ls
$ echo "file_a file_b" | xargs -J% ls %
file_a file_b
$
$ echo file_a file_b | xargs -n1 ls
$ echo file_a file_b | xargs -n1 -I% ls %
$ echo file_a file_b | xargs -n1 -J% ls %
$ echo "file_a file_b" | tr -s ' ' '\n'
$ echo "file_a file_b" | xargs -n1 ls
$ echo "file_a file_b" | xargs -n1 -I% ls %
$ echo "file_a file_b" | xargs -n1 -J% ls %
file_a
file_b
$