「引数が大きすぎる」を回避するためのxargs

バイト先で、10万ファイルほど置かれたディレクトリ上で下記コマンドを実行したらエラーになりました。

$ mv * ../other_dir/
引数が多すぎます

シェルがワイルドカードを展開した後の引数文字列が長すぎるのが原因でした。シェルがforkした後、mvをexecするところでエラーになるらしいです。
下記コマンドで回避できました。

$ find . -type f | xargs -i mv {} ../other_dir/

xargsは前から使ってたんですが{}でパイプで受け取った文字列を指定できるのは知らなかったなあ。