重複ファイルを検索(および削除)する方法


125

膨大な音楽コレクションがあり、いくつかの重複があります。重複ファイルを見つける方法はありますか。少なくとも、ハッシュを実行し、2つのファイルが同じハッシュを持っているかどうかを確認します。

拡張子とは別に同じ名前のファイルを検索することに対するボーナスポイント-mp3とogg形式の両方のバージョンの曲がいくつかあると思います。

それが最も簡単な方法であれば、コマンドラインを使用してうれしいです。

回答:


138

これに使用fdupesします。これは、リポジトリからを使用してインストールできるコマンドラインプログラムですsudo apt install fdupes。あなたはそれを好きなように呼び出すことができfdupes -r /dir/ect/ory、それはデュープのリストを印刷します。fdupesには、シンプルなホームページウィキペディアの記事もあり、さらにいくつかのプログラムがリストされています。


7
また、保持するコピーを選択できる「-d」オプションがあり、他のコピーを削除します(または必要に応じてすべてコピーを保持できます)。
マシュークランリー

どのように私は私の問題を解決するには、-dオプションを使用することができ、ここで
ジョン・マッキーンプルーイット

fdupesが重複ファイルの代わりに重複フォルダをリストすることは可能ですか?
アンダーソングリーン

2
再帰的なディレクトリツリーですべての重複を削除する方法(各ファイルのコピーを1つだけ残す方法)を詳細に説明できますか?これを自動的に、つまり、保持するファイルを毎回指定する必要なしに行います。複製の1つを選択するだけです。
ベッコ

5
fdupes -r . -d -N最初のインスタンスを保存し、重複を削除する必要があります。私は首尾よく使用して単一のフォルダをクリアfdupes . -d -N再帰的に非
サイモンB

61

FSlintにはGUIとその他の機能があります。FAQの重複チェックアルゴリズムの説明:

1. exclude files with unique lengths
2. handle files that are hardlinked to each other
3. exclude files with unique md5(first_4k(file))
4. exclude files with unique md5(whole file)
5. exclude files with unique sha1(whole file) (in case of md5 collisions).

fslint fslintをインストールする


12
ありがとう。コマンド名は「fslint-gui」であり、コマンドラインツールはデフォルトでは$ PATHにないことに注意してください-それらは/ usr / share / fslint / fslintにあります。fslintを(/ usr / lib / command-not-found経由で)実行するだけで、どのパッケージに含まれているのかについてのヘルプが得られなかったとき、私は混乱しました。
nealmcb

まさに必要なもの
テベ14

1
@nealmcbを使用するsudo apt-get install fslint場合、インストールは現在fslint-guiパスに置かれているので、入力するだけでどこからでも実行できますfslint-guifslint-gui入力すると、どこに住んでいるかがわかりますwhich fslint-gui(Pythonスクリプトのように見えます)。
user29020 14年

55

のリストはprograms/scripts/bash-solutions、重複を見つけて実行できますnix

  1. dupedit:チェックサムなしで一度に多くのファイルを比較します。複数のパスが同じファイルを指している場合、ファイルをそれ自体と比較することを避けます。
  2. dupmerge:さまざまなプラットフォーム(Cygwin、* nix、LinuxなどのWin32 / 64)で実行
  3. dupseek:読み取りを減らすために最適化されたアルゴリズムを備えたPerl。
  4. fdf:Perl / cベースで、ほとんどのプラットフォーム(Win32、* nixなど)で実行されます。MD5、SHA1、およびその他のチェックサムアルゴリズムを使用
  5. freedups:指定したディレクトリを検索するシェルスクリプト。2つの同一のファイルが見つかると、それらを相互にハードリンクします。現在、2つ以上のファイルがそれぞれのディレクトリに存在していますが、データのコピーはディスクに1つだけ保存されています。両方のディレクトリエントリは同じデータブロックを指します。
  6. fslint:コマンドラインインターフェイスとGUIがあります。
  7. liten:md5チェックサムと新しいバイト比較アルゴリズムを使用した、Pure Python重複排除コマンドラインツール、およびライブラリ。(Linux、Mac OS X、* nix、Windows)
  8. liten2:元の Litenの書き直し。コマンドラインツールですが、SHA-1チェックサムを使用したより高速なインタラクティブモード(Linux、Mac OS X、* nix)
  9. rdfind:「オリジナル/既知の」ソース(複数のディレクトリが指定されている場合)で削除しないために、入力パラメーター(スキャンするディレクトリ)の順序に基づいて重複をランク付けする数少ないものの1つ。MD5またはSHA1を使用します。
  10. rmlint:コマンドラインインターフェイスと他のリントを見つけるための多くのオプションを備えた高速ファインダー(MD5を使用)
  11. ua:find(など)で動作するように設計されたUnix / Linuxコマンドラインツール。
  12. findrepe:重複ファイルの効率的な検索のために設計された無料のJavaベースのコマンドラインツール、それがジッパーや瓶内を検索することができます(GNU / Linuxでは、マックOS X、* NIX、Windowsの場合)。
  13. fdupe:Perlで書かれた小さなスクリプト。その仕事を迅速かつ効率的に行う。1
  14. ssdeep:Context Triggered Piecewise Hashingを使用してほぼ同一のファイルを識別します

4
これらのプログラムのいずれかが重複したフォルダーを見つけることができます(ファイルの重複だけではありませんか)
Anderson Green

3
@AndersonGreen rmlintは重複したdirsを見つけることができます。rmlint -T dd
オリゴフレン

Ubuntuの場合、別の方法は、ファイルを開き、指定された拡張子(.mp3など)を検索(control-f)して、ファイル名でソートすることです。これにより、手動で重複を削除でき、同時に重複の場所を表示できます。
axd

6

重複排除タスクが音楽に関連している場合は、最初にpicardアプリケーションを実行して、音楽を正しく識別してタグ付けします(名前が間違っていても重複する.mp3 / .oggファイルを見つけるため)。picardはUbuntuパッケージとしても利用できることに注意してください。

これで、musicip_puidタグに基づいて、重複するすべての曲を簡単に見つけることができます。


4

この仕事をする別のスクリプトはrmdupeです。著者のページから:

rmdupeは、標準のLinuxコマンドを使用して、ファイル名や拡張子に関係なく、指定されたフォルダー内で重複ファイルを検索します。重複する候補が削除される前に、バイトごとに比較されます。rmdupeは、1つ以上の参照フォルダーに対して重複をチェックしたり、ファイルを削除する代わりにゴミ箱に入れたり、カスタムの削除コマンドを許可したり、指定したサイズのファイルに検索を制限したりできます。rmdupeにはシミュレーションモードが含まれており、実際にファイルを削除することなく、特定のコマンドに対して実行されることを報告します。


3

やってみました

finddup

または

finddup -l

私はそれがうまくいくと思います。


2

http://musicbrainz.org/による音楽関連の重複した識別と削除については、PicardとJaikoz が最適なソリューションです。Jaikoz曲ファイルのデータに基づいて、音楽に自動的にタグを付けます。曲を識別してすべてのメタデータを割り当てるために、曲の名前さえ必要ありません。無料版では1回の実行でタグ付けできる曲の数は限られていますが、何度でも実行できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.