:::: MENU ::::

Linux上で重複したファイルを探して削除する

Linux上で重複したファイルを削除するツールにfdupesというツールがあります。
findなどで、単にファイル名やファイルサイズを比較しても、中身が同じであるとは限りませんが、fdupesは、ファイルサイズとmd5ハッシュ値を比較して、重複ファイルを抽出するので、ほぼ間違いないツールだと思います。

fdupesは標準では入っていないので、インストールする必要があります。
Debian系だと、そのままapt-getでインストール

# apt-get -y install fdupes

RedHat系だとepelのリポジトリにてインストール出来ます。

# yum -y install fdupes --enablerepo=epel

使い方
あるディレクトリ内を再帰的に重複ファイルを検索

$ fdupes -r ~/Dropbox/

重複ファイルを対話形式で削除

$ fdupes -rd ~/Dropbox/

最初に検索されたファイルを除外し、確認しながら削除

$ fdupes -frdN ~/Dropbox/

最初に検索されたファイル以外を問答無用で削除

$ fdupes -fr ~/Dropbox/ | xargs rm

注意事項
-fの引数で最初に検索されたものが除外されるが、果たして、この除外されたファイルが実際に残しておかなくてはならないのか判断する必要があります。
中には重複したファイルが、あるディレクトリ内になくてはならないものも存在します。

ですので、一番安心な方法は、fdupes -rで検索した結果をリスト化して、自分の判断で削除する事ですね。

$ fdupes -rf ~/Dropbox/ | sort | uniq | grep -v '^$' > duplicate.txt
[`evernote` not found]


So, what do you think ?