2014年7月20日日曜日

【Linux】重複したファイルを探して削除する.

iTunesのライブラリを整理していたら,操作を誤ってしまい大量の重複ファイルができてしまった.

(参考画像)


いつもだったら,find と grep の合わせ技で削除していくところだが,今回はファイル数が膨大なので,万が一ミスして必要なファイルまで削除してしまったら大変なことになる.

そこで,今回は fdupes という重複ファイルを見つけ出すプログラムを利用した.

使い方は非常に簡単で,以下のように打つと,次から次へとチェックし,

$ fdupes -r ~/Music

終了すると重複ファイルリストを一気に出力する.なお,r は再帰的に検索するオプション.

出来上がったリストをひと通りチェックし問題がなさそうだったら,次はいよいよ削除する.

$ fdupes -r ~/Music | grep 1.mp3$ | sed s/" "/"\\\\\\\\ "/g | xargs rm

出力の加工にはおなじみの sort コマンドや,uniq コマンド,grep コマンドなど適宜使用する.

ここではまず ***1.mp3 というファイル名のものを抽出するために grep コマンドを使用し,
さらに「スペース」を「バックスラッシュ2個+スペース」に変換するために sed コマンドを使用した.

fdueps は find などに比べればとても低速だが,ファイルサイズや,md5ハッシュ値を用いて
重複ファイルを抽出するので,間違いが起きる心配がなく,非常に有用なプログラムと言えそうだ.

作者様に感謝である.

0 件のコメント:

コメントを投稿