UTF-8 の BOM (Byte Order Mark) があるかどうかを判定する。オプションにより書いたり消したりする。

 $0 ファイル名 [ファイル名] [ファイル名] ..

 多数のファイルを処理するには、find . | xargs -n 100 $0  のように指定すると良いだろう。
 

オプション :

 -A     : 指定した各ファイルに UTF-8のBOM を追加する。
 -D     : 指定した各ファイルに UTF-8のBOM を除去する。
 -B     : 指定したファイル名Bに対しB.bakをBへ。BがあればB.bakへ。-i で.bakの部分は変更可能。
 -F     : -i でバックアップされたと思われる様な、特定の拡張子を持っていても、そのファイルに処理をする。(forced)
 -!     : 元のファイルを残さない。

 -b     : バイトサイズを出力する。(現状 -Aまたは-Dが指定された場合は無効。)
 -i str : 元のファイルに対して,指定文字列の拡張子を付属して残す。未指定なら、".bak"。
 -q     : どのファイルを処理した,と言うような情報の出力を抑制する。

開発上のメモ : 
   * 0バイトのファイルに対する処理を,適切に行うようにしたい。
   * ファイルに対して処理するので無くて,標準入力に対する処理を加えたい。-p または -1で。
   * 出力する空白文字の個数の指定をもっとスマートにしたい。ファイル名に対する囲み文字を統一したい。