Comando terminale per spostare un numero di file contenenti parentesi in un'altra cartella o cestino

1

Ieri sera ho consolidato una raccolta musicale in un posto e ogni canzone è stata separata da una cartella Artista e dalla traccia. Il problema è che ci sono un numero elevato di duplicati all'interno di queste cartelle. Ci sono oltre 3.000 cartelle di artisti e in ogni cartella di artisti ci sono un paio di duplicati, quindi non mi piacerebbe indovinare quanti duplicati ci sono in totale.

Il software che ho usato per consolidare la musica ha preso ogni traccia duplicata e rinominato il file successivo con un (1) .mp3, o se ha più di un duplicato, è stato rinominato (2) .mp3, (3 ) .mp3 e così via fino a quando non rinomina l'ultimo numero di duplicati trovati per quella particolare traccia.

Quindi ho sentito che il modo migliore per eliminarli era fare una semplice ricerca "(1) .mp3" sotto i riflettori, ma per qualche motivo non mi dà i risultati giusti, non importa quello che cerco. (Ho letto da qualche parte che ha qualcosa a che fare con l'installazione di linux / mac os). Quindi ho esaminato l'utilizzo del terminale per cercare nella directory utilizzando il comando appropriato. Ma neanche questo sembra funzionare. Il percorso della directory è:

/Volumes/AUDIO\ DRIVE/Music\ Database

Quindi ho usato il comando ...

find /Volumes/AUDIO\ DRIVE/Music\ Database “(1).mp3"

... che restituisce risultati, ma non nel modo che mi aspettavo, cioè restituisce molti file, solo alcuni dei quali hanno il (1) .mp3 alla fine di essi. Molti di loro non hanno questo e sono solo normali tracce con .mp3 alla fine. per esempio. The Beatles - Ticket to Ride.mp3

Quindi ho esaminato un comando che mi permettesse di cercare questi file e spostare i risultati in un'altra posizione. Così ho creato una cartella chiamata "Moved Files" che ha una directory di:

/Volumes/AUDIO\ DRIVE/Moved\ Files

Quindi ho usato il seguente comando che ho trovato online ...

find /Volumes/AUDIO\ DRIVE/Music\ Database “(1).mp3" -exec mv {} ~/Volumes/AUDIO\ DRIVE/Moved\ Files \;

... che fa una delle due cose a seconda di quale umorismo si trova in Terminal. Sposta i file errati nella directory specificata (forse a causa dei risultati di ricerca inaccurati che avevo all'inizio) o mi dà il seguente errore:

-bash: syntax error near unexpected token ')'

Se qualcuno là fuori mi può aiutare, lo apprezzerei davvero. È davvero frustrante sapere che se si trattasse di una macchina Windows, tutto quello che dovrei fare è digitare * (1) .mp3 nella barra di ricerca e bloccare cancellare tutti i risultati, ma sinceramente non riesco a trovare un modo per aggirare questo Mac. E "NO" Non posso usare una macchina Windows in quanto è una mela G Drive che ha tutti gli audio memorizzati su di essa.

    
posta Chris Cleary 21.10.2014 - 21:33
fonte

3 risposte

2

find prevede un modello non solo un nome, quindi potresti ottenere risultati migliori con

find /Volumes/AUDIO\ DRIVE/Music\ Database -name '*(1).mp3' -print
    
risposta data 23.10.2014 - 11:45
fonte
1

Basta usare Spotlight nel Finder per cercare i file con * (1) .mp3 ecc. Inizia una nuova ricerca Spotlight, aggiungi una regola Raw Query e usa quanto segue, quindi seleziona tutto ed elimina.

kMDItemDisplayName=='*(1).mp3'
    
risposta data 21.10.2014 - 22:41
fonte
0

Sembra che l'errore nel comando del terminale sia dovuto a un brutto taglio e incolla. Sostituisci il primo "con", in modo che il comando finale sia il seguente:

find /Volumes/AUDIO\ DRIVE/Music\ Database -name "*(1).mp3" -exec mv {} ~/Volumes/AUDIO\ DRIVE/Moved\ Files \;

Se sei sicuro del terminale, ti suggerisco di installare fdupes o il fork fdupes-jody e poi:

fdupes -r dir1 dir2 | grep dir1/ | xargs rm 

per rimuovere i duplicati in dir1 .

Spero che questo aiuti.

    
risposta data 24.03.2015 - 16:11
fonte

Leggi altre domande sui tag