可能な解決策として、任意のツールを使用して、ファイルをメタデータ情報なしで非圧縮ストリーム(pcm
、wav
)に変換してから比較できます。変換するために、あなたが好きなソフトウェアを使用するかffmpeg
、sox
またはavidemux
。
たとえば、ffmpegでそれを行う方法
その例に対して、異なるメタデータを持つ2つのファイル
$ diff Original.mp3 Possible-dup.mp3 ; echo $?
Binary files Original.mp3 and Possible-dup.mp3 differ
があるとします。ブルートフォース比較では、それらが異なると文句を言います。
次に、bodyを変換して比較します。
$ diff <( ffmpeg -loglevel 8 -i Original.mp3 -map_metadata -1 -f wav - ) <( ffmpeg -loglevel 8 -i Possible-dup.mp3 -map_metadata -1 -f wav - ) ; echo $?
0
コース外の ; echo $?
部分は、戻りコードを見るためのデモンストレーションのみを目的としています。
複数のファイルの処理(トラバースディレクトリ)
あなたは、コレクション内の重複を試してみたい場合には、計算のチェックサムの価値を持っている(いずれかのようなcrc
、md5
、sha2
、sha256
)データの、その後、ちょうどそこに衝突を見つけます。
それはその質問の範囲外ですが、ディレクトリアカウンティング内のファイルの重複を見つける方法の簡単な提案を提案します。
- 最初に各ファイルのデータのハッシュを計算します(そして次の処理のためにファイルに配置します):
for file in *.mp3; do printf "%s:%s\n" "$( ffmpeg -loglevel 8 -i "$file" -map_metadata -1 -f wav - | sha256sum | cut -d' ' -f1 )" "$file"; done > mp3data.hashes
ファイルは次のようになります:
$ cat mp3data.hashes
ad48913a11de29ad4639253f2f06d8480b73d48a5f1d0aaa24271c0ba3998d02:file1.mp3
54320b708cea0771a8cf71fac24196a070836376dd83eedd619f247c2ece7480:file2.mp3
1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Original.mp3
8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other-dup.mp3
8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other.mp3
1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Possible-dup.mp3
RDBMSは、カウントを集計し、そのようなデータを選択するのに非常に役立ちます。ただし、さらに簡単な手順を実行したい場合がある純粋なコマンドラインソリューションを続行します。
重複するハッシュがある場合はそれを参照してください(それがどのように機能するかを示すための追加のステップであり、重複の検出には不要です)。
$ count.by.regexp.awk '([0-9a-f]+):' mp3data.hashes
[1:54320b708cea0771a8cf71fac24196a070836376dd83eedd619f247c2ece7480]=1
[1:1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f]=2
[1:ad48913a11de29ad4639253f2f06d8480b73d48a5f1d0aaa24271c0ba3998d02]=1
- そしてすべて一緒にコンテンツによって複製されたファイルをリストします:
$ grep mp3data.hashes -f <( count.by.regexp.awk '([0-9a-f]+):' mp3data.hashes | grep -oP '(?<=\[1:).{64}(?!]=1$)' ) | sort
1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Original.mp3
1d8627a21bdbf74cc5c7bc9451f7db264c167f7df4cbad7d8db80bc2f347110f:Possible-dup.mp3
8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other-dup.mp3
8918674499b90ace36bcfb94d0d8ca1bc9f8bb391b166f899779b373905ddbc1:Other.mp3
count.by.regexp.awkは、awk
正規表現パターンをカウントする単純なスクリプトです。