Macでうまく動いたxargsコマンドが、Linuxで意図と違う動きをしてしまうことがあります。
$ echo a b c | xargs -n1 -I char echo ___char___
___a b c___
あれあれ、a b cがひとつながりの文字列になってしまった? 特にダブルクオートもしていないのに? Macではもちろん
___a___
___b___
___c___
と出力されたのに?
これは、-Iオプションの性質です。
Replace occurrences of replace-str in the initial-arguments with names read from standard input. Also, unquoted blanks do not terminate input items; instead the separator is the newline character. Implies -x and -L 1.
とmanにもあり、-Iオプションを使ったときには改行しか区切りとみなされなくなるんです。GNU版では。
対策
xargsコマンドを一回かませて、改行区切りのリストに変換してからxargs -Iに渡しましょう。
$ echo a b c | xargs -n1 | xargs -n1 -I char echo ___char___
___a___
___b___
___c___