Come posso trovare ed eliminare tracce musicali duplicate?


8

Il mio problema è che per qualche motivo ho duplicati di alcuni brani musicali. Tuttavia non sono nominati in modo identico. Per esempio:

Musica / Prefuso 73 / One Word Extinguisher / 07. Detchibe.mp3

&

Musica / Prefuso 73 / One Word Extinguisher / 07 - Detchibe.mp3

Si noti che sono brani duplicati ma il 07 * . * & the 07 - sta ingannando i cercatori di file duplicati che cercano in base ai nomi dei file.


2
Hai provato qualcuno dei suggerimenti qui ?
jpd,

Fdupes può individuare uno dei due duplicati ed eliminarlo? Altrimenti il ​​comando fdupes -r genera solo un elenco che non mi porta da nessuna parte.
John McKean Pruitt,

Questo risponde alla tua domanda? Come posso trovare brani duplicati?
karel

Risposte:


2

Puoi usare fdupescome la risposta alla domanda »Come trovare ed eliminare i file duplicati« suggerito. Lasciami fare un esempio:

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]:

Per prima cosa ho creato la directory come nel tuo esempio. Ho creato un file da dati casuali e copiato il suo contenuto in un altro file. Quando eseguo fdupes -rdil software trova i due file esatti e chiede quale eliminare.

Se hai molti file, puoi usare l'opzione -1. fdupesstamperà tutti i duplicati su una sola riga. È possibile elaborarli con xargse altre funzionalità della shell.


L'output del comando fdupes -r può essere reindirizzato al comando mv?
John McKean Pruitt,

fdupes -rd è vicino a quello che voglio, ma dovrò premerne uno circa 2000 volte perché tutti i duplicati scompaiano.
John McKean Pruitt

1
Ho aggiunto un paragrafo alla mia risposta sopra.
qbi,

Il problema qui è che fdupesnon sembra tuffarsi nelle sottocartelle. Ad esempio, ~/Desktop/Dupes2/contiene una cartella intitolata Blood Sugar Sex Magik con i Dupes, ma un semplice fdupes -rcomando non restituisce alcun elenco.
John McKean Pruitt,

2

Ho trovato una catena di comando piuttosto semplice. Mille grazie a @Oli.

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

Questo usato fdupesper -rtrovare ricorsivamente ( ) i duplicati, omettendo il primo ( -f). Bash legge questa riga per riga attraverso le readmani di ogni riga mvper spostare tutti i duplicati in un'altra directory. Nota l'uso delle virgolette nel whileciclo per gestire gli spazi e altre punteggiatura truffa che fdupesnon gestiranno (anche con -1/ --sameline).


@Oli, questo non sta facendo il trucco. Nessun file viene spostato da una cartella all'altra
John McKean Pruitt

@Oli vedi il mio ultimo commento a "qbi" di seguito.
John McKean Pruitt,

1

Nelle risposte a Imposta manualmente il numero di ascolti in Banshee? , descrive come accedere al database utilizzato da Banshee per salvare tutte le informazioni sulla traccia.

Una volta connesso al database, nella tabella delle query di esecuzione, incollare

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

nella casella stringa SQL, quindi fare clic su "Esegui query". Questo ti mostrerà tutte le tracce che hai con lo stesso titolo ignorando spazi, trattini e punti. Se ci sono altri caratteri che si desidera ignorare, aggiungerli alla query nello stesso modello. (IE aggiungere replace(prima della prima "sostituzione" esistente e dopo l'ultima ")" su quella riga, aggiungere , '[character you want removed]', '').

(Non so quanto sai di sql - se hai bisogno di maggiori dettagli, pubblica un commento.)

Questo ti darà un elenco di titoli. Dovrai effettivamente eliminare da solo.

Potrebbe esserci un modo migliore per farlo, ma se c'è, non lo so.

Una volta che hai un grande elenco di file da eliminare (dal mio metodo o da fdupescome altri hanno già detto), metti l'elenco dei file che desideri eliminare in una directory di testo. Assicurarsi che sia vera una delle seguenti condizioni:

Opzione n. 1: i nomi dei file contengono il percorso completo. Ad esempio il file potrebbe contenere:

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

Opzione n. 2: i nomi dei file contengono il percorso relativo e il file con l'elenco dei nomi dei file viene salvato nella cartella principale. Ad esempio, se l'elenco dei file è stato salvato /home/doneill/music/, conterrebbe:

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

In entrambi i casi, aprire una finestra del terminale e passare alla cartella che contiene il file con l'elenco, cd /home/doneill/music/ad esempio.

Digitare:

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

(Sostituendo filelist.txt con il nome del file con l'elenco). Questo dovrebbe sputare un elenco di tutti i file che si desidera eliminare. Prenditi un momento per ricontrollare l'elenco. Se è corretto, digitare:

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

Questo in pratica dice al tuo computer: per ogni riga del file filelist.txt, rimuovi un file con il nome elencato.


La domanda riguarda i file duplicati, nessuna menzione di Banshee.
jpd,

2
@jpd È taggato banshee ...
David Oneill

Spiacenti, mancano completamente i tag.
jpd,

Non riesco ad accedere alla banca dati banshee perché l'11.10 non ha la possibilità di aprirsi con un comando personalizzato e la soluzione suggeriva che non funzionava - sono stato gettato nella tana del coniglio per un secondo ma sono tornato senza soluzione.
John McKean Pruitt,

1
@JohnMcKeanPruitt 1) ​​Esegui il browser del database sqlite (il comando è sqlitebrowserse non viene inserito nel tuo menu quando lo installi). 2) File -> Apri. 3) Digita /home/[user]/.config/banshee-1/nella barra degli indirizzi "Cerca" (sostituisci [utente] con il tuo nome utente). 4) Fare doppio clic su banshee.db.
David Oneill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.