解決策 1:
GNU xargs (Linux のデフォルト。findutils
をインストール OS X の MacPorts から取得) -d
をサポート これにより、入力用のカスタム区切り文字を指定できるため、次のことができます
ls *foo | xargs -d '\n' -P4 foo
解決策 2:
の線に沿った何か
alias myxargs='perl -p -e "s/\n/\0/;" | xargs -0'
cat nonzerofile | myxargs command
動作するはずです。
解決策 3:
Bash を使用する場合、私は一般的に、少しトリッキーなものについては xargs を避け、while-read ループを優先します。あなたの質問については、while read -ar LINE; do ...; done
ジョブを実行します (LINE では配列構文を使用することを忘れないでください。例:${LINE[@]}
ライン全体)。これにはトリックは必要ありません:デフォルトでは read は \n
だけを使用します 行終端文字として。
xargs と while-read ループの長所と短所について SO に質問を投稿する必要があります...完了!
解決策 4:
$ echo "1\n2 3\n4 5 6" | xargs -L1 echo "#"
# 1
# 2 3
# 4 5 6