重複する音楽トラックを見つけて削除するにはどうすればよいですか?


8

私の問題は、何らかの理由でいくつかの音楽トラックの重複があることです。ただし、それらは同じ名前ではありません。例えば:

音楽/ Prefuse 73/1つの単語消火器/ 07。Detchibe.mp3

音楽/ Prefuse 73/1つの単語消火器/ 07-Detchibe.mp3

重複しているが、07 *であることに注意してください*&07 -ファイル名に基づいて検索重複ファイルファインダーをだましています。


2
ここで提案を試しましたか?
jpd 2012年

fdupesは2つの重複のうちの1つを選択して削除できますか?それ以外の場合、fdupes -rコマンドは、どこにもアクセスできないリストを生成するだけです。
John McKean Pruitt 2012

これはあなたの質問に答えますか?重複した曲を見つけるにはどうすればよいですか?
karel

回答:


2

fdupes質問の回答のように使用できます»重複したファイルを見つけて削除する方法«提案されました。例を挙げましょう。

mkdir -p "Music/Prefuse 73/One Word Extinguisher/"
dd if=/dev/urandom of=Music/Prefuse\ 73/One\ Word\ Extinguisher/07.Detchibe.mp3 bs=1023 count=2048
  2048+0 records in
  2048+0 records out
  2095104 bytes (2.1 MB) copied, 0.379806 s, 5.5 MB/s
cp Music/Prefuse\ 73/One\ Word\ Extinguisher/07.Detchibe.mp3 Music/Prefuse\ 73/One\ Word\ Extinguisher/"07 - Detchibe.mp3"
fdupes -rd .
  [1] ./Music/Prefuse 73/One Word Extinguisher/07.Detchibe.mp3
  [2] ./Music/Prefuse 73/One Word Extinguisher/07 - Detchibe.mp3

  Set 1 of 1, preserve files [1 - 2, all]:

まず、例のようにディレクトリを作成しました。私はランダムなデータからファイルを作成し、その内容を別のファイルにコピーしました。fdupes -rdソフトウェアを実行すると、2つの正確なファイルが見つかり、どちらを削除するか尋ねられます。

ファイルがたくさんある場合は、オプションを使用できます-1fdupesすべての重複を1行で印刷します。xargsおよびその他のシェル機能でそれらを処理できます。


fdupes -rコマンドからの出力をmvコマンドにパイプできますか?
John McKean Pruitt、2012

fdupes -rdは私が望むものに近いですが、すべてのdupeが消えるには、約2000回1回押す必要があります。
John McKean Pruitt

1
上記の回答に段落を追加しました。
qbi 2012

ここでの問題は、fdupesサブフォルダーに飛び込んでいないように見えることです。たとえば~/Desktop/Dupes2/、Dupesを使用したBlood Sugar Sex Magikというタイトルのフォルダーがありますが、単純なfdupes -rコマンドではリストが返されません。
John McKean Pruitt、2012年

2

やや単純なコマンドチェーンが見つかりました。@Oliに感謝します。

fdupes -rf --quiet ~/Desktop/Dupes2/ | while read i; do mv "$i" ~/Desktop/Dupes/ ; done

これはfdupes、再帰的に(-r)デュープを検索し、最初の(-f)を省略して使用していました。Bashはreadamd を介してこの行を1行ずつ読み取り、mvすべての重複を別のディレクトリに移動するために各行を渡します。引用符の使用に注意してくださいwhileハンドルスペースやその他の危険な句読点にループfdupes(偶数での取り扱いはありませんが-1/ --sameline)。


@オリ、これはトリックをやっていない。あるフォルダから別のフォルダにファイルが移動されていない
John McKean Pruitt 2012

@Oli以下の「qbi」に対する私の最新のコメントを参照してください。
John McKean Pruitt、2012年

1

Bansheeでトラックのリッスンカウント手動で設定するための回答では、bansheeがすべてのトラック情報を保存するために使用するデータベースにアクセスする方法について説明します。

データベースに接続したら、クエリ実行テーブルに貼り付けます

select tweaked_track, count(*) from 
  (select replace(replace(replace(title, ' ', ''), '-', ''), '.', '') as tweaked_track 
   from coretracks) 
group by tweaked_track 
order by 2, 1 desc;

[SQL文字列]ボックスに「クエリを実行」をクリックします。これにより、スペース、ダッシュ、ピリオドを無視して、同じタイトルのすべてのトラックが表示されます。無視したい他の文字がある場合は、同じパターンでクエリに追加します。(replace(つまり、その行の最初の既存の「置換」の前と最後の「)」の後に、を追加し, '[character you want removed]', '')ます。

(SQLについてどれだけ知っているかわかりません。詳細が必要な場合は、コメントを投稿してください。)

これにより、タイトルのリストが表示されます。実際に自分で削除する必要があります。

これを行うためのより良い方法があるかもしれませんが、それがあったとしても、私はそれについて知りません。

(私の方法から、またはfdupes他の人が述べたように)削除するファイルの大きなリストを取得したら、削除するファイルのリストをテキストディレクトリに配置します。次のいずれかに該当することを確認してください。

オプション#1:ファイル名には完全パスが含まれます。たとえば、ファイルには次のものが含まれます。

/home/doneill/music/weird_al/duped_file.mp3
/home/doneill/music/weird_al/another_dupe.mp3
/home/doneill/music/bach/baroque_dupe.mp3

オプション#2:ファイル名には相対パスが含まれ、ファイル名のリストを含むファイルは親フォルダーに保存されます。たとえば、ファイルリストがに保存された/home/doneill/music/場合、次の内容が含まれます。

weird_al/duped_file.mp3
weird_al/another_dupe.mp3
bach/baroque_dupe.mp3

どちらの場合も、ターミナルウィンドウを開いて、cd /home/doneill/music/たとえばリストのあるファイルを含むフォルダーに移動します 。

入力:

for a in `cat filelist.txt`; do echo $a; done

(filelist.txtをリストのあるファイルの名前に置き換えます)。これにより、削除するすべてのファイルのリストが表示されます。リストをもう一度確認してください。正しい場合は、次のように入力します。

for a in `cat filelist.txt`; do rm $a; done

これは基本的にコンピューターに指示しますfilelist.txt。ファイルの各行で、リストされた名前のファイルを削除します。


質問では、重複ファイルについて尋ねられますが、Bansheeについては触れられていません。
jpd 2012年

2
@jpdこれはbansheeとタグ付けされています...
David Oneill

タグを完全に逃しました。
jpd 2012年

11.10にはカスタムコマンドで開くオプションがないため、bansheeデータベースにアクセスできません。回避策はそれが機能しないことを示唆しました-ウサギの穴を1秒間スローしましたが、戻ってきました解決策はありません。
John McKean Pruitt 2012

1
@JohnMcKeanPruitt 1)sqliteデータベースブラウザーを実行します(sqlitebrowserインストール時にコマンドがメニューに表示されない場合は、コマンドを実行します)。2)ファイル->開く。3)/home/[user]/.config/banshee-1/[探す場所]アドレスバーに入力します([user]を自分のユーザー名に置き換えます)。4)をダブルクリックしbanshee.dbます。
David Oneill、2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.