xargs + shell script のはまりどころ
昨今、Java でプログラムを書く場合に外部ライブラリに依存することが多いと思うのだけども*1、そういう場合
#!/bin/sh java -cp commons-lang.jar:commons-logging.jar:log4j.jar:classes com.example.Foo "$@"
な shell script を用意して使うことが多い*2。
で、この場合
find . -type f -print0 | xargs -0 -e ./foo.sh
てなことをやると、実際に java を起動する場合のコマンドラインが ARG_MAX を超えるなんて羽目になってはまる罠。
というようなことを誰も書かないなぁ、と思って書いてみたわけだけど、これって常識ではないんだろうか。だからこそだれも書かないのかな?