2012年8月31日金曜日

重複ファイルの削除

nintendogs+catsで同じ人とすれちがい通信を繰り返すうちに、ファイル名は違うが内容は同じ画像ファイルがたまってきたので、これらを整理するために内容が重複しているファイルを削除またはリネームするRubyスクリプトfuniqを書いた。

今までは内容をコピペしてスクリプトをアップしていたけれど、今回はGoogle Driveを使ってみた。

使用例

% funiq
と実行すると、カレントディレクトリにある通常ファイルの中で、内容が他のものと同じファイルを1つだけ残して、他は全て削除する。残すファイルは、ファイル名を辞書順でソートした時に末尾に来るもの。連番ファイル名なら最も番号が大きいものが残る。

あくまで対象は通常ファイルなので、ソフトリンクは対象外。リンク元とリンク先が重複していると見なされて、リンク元が削除されてウギャーッ、なんてことにはならないはず。

いきなり削除するのが怖ければ、

% funiq -e .dup
のように実行すればよい。削除する代わりに、ファイル名の末尾に.dupを付ける。

重複したとき、どのファイルを残すかは -c オプションで指定できる。

% funiq -cl
がデフォルトの動作で、辞書順で最後に来るものを残す。逆に、辞書順で先頭のファイルを残すにはこうする。
% funiq -cf

ファイル名ではなく、タイムスタンプを見て最も新しいものを残したい場合はこう。

% funiq -cn
一方、最も古いものを残したい場合はこうする。
% funiq -co

0 件のコメント:

コメントを投稿