Twitter / @futamiryo: 画像は類似検索があるけどxlsやzipは完全一致ばっ …
https://twitter.com/#!/futamiryo/status/163566455504375808
単純に、バイナリdiff を取ればよいのでは?と思ったり思わなかったりしただけど、
- バイナリ形式で、Excel ファイルを比較するけど、ファイル数は 10,000 ファイルほどある模様。
- なので、単純な突き合わせだと、10^10 のオーダーになって爆発しそう。
な訳で、2段階踏まないと、実運用に耐えなそう。
バイナリ形式の diff は、文字単位に diff を取ればよいので、2007-03-15 – 当面C#と.NETな記録 の .NET diff class の DiffChar を使うのがよさげ。比較するのが string なので、バイナリデータを 0xFF のアルファベットに直してから比較するのが良いでしょう。
比較ファイルの絞り込みは、
- ファイル名の比較(おそらく、似た名前で作っているハズ)
- ファイル長さの比較(あまり違う場合は、はずすとか)
にしておけば、10^10 のオーダーではなくなるハズです。
そして、結果の、DeffResult[] が、少ない順にまとめていけば、なんとなく新旧のファイルがあつまるはずですね。
結果は、なんらかの形でレポートすれば、よかろうと。
ってことで、ふたみさんの作業には間に合わいそうもないけどw、ちと、この路線で明日作ってみますか。