Comando de terminal para mover una cantidad de archivos que contienen corchetes a otra carpeta o papelera

Anoche consolidé una colección de música en un solo lugar y cada canción está separada por una carpeta de Artista y la pista. El problema es que hay una gran cantidad de duplicados dentro de estas carpetas. Hay más de 3000 carpetas de artistas y en cada carpeta de artista hay un par de duplicados, así que no me gustaría adivinar cuántos duplicados hay en total.

El software que utilicé para consolidar la música ha tomado cada pista duplicada y ha renombrado el archivo subsiguiente con (1).mp3, o si tiene más de un duplicado, ha sido renombrado (2).mp3, (3).mp3 y así sucesivamente hasta que cambie el nombre del último número de duplicados encontrados para esa pista en particular.

Entonces, sentí que la mejor manera de eliminarlos era hacer una búsqueda simple "(1).mp3" en Spotlight, pero por alguna razón no me da los resultados correctos sin importar lo que intente. (Leí en alguna parte que tiene algo que ver con la configuración de linux/mac os). Entonces busqué usar la terminal para buscar en el directorio usando el comando apropiado. Pero esto tampoco parece funcionar. La ruta del directorio es:

/Volúmenes/AUDIO\ DRIVE/Música\ Base de datos

Así que usé el comando...

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

…que devuelve resultados, pero no de la manera que esperaba, es decir, devuelve muchos archivos, solo algunos de los cuales tienen el (1).mp3 al final. La mayoría de ellos no tienen esto y son solo pistas normales con .mp3 al final. por ejemplo, The Beatles - Ticket to Ride.mp3

Entonces busqué un comando que me permitiera buscar estos archivos y mover los resultados a otra ubicación. Así que creé una carpeta llamada "Archivos movidos" que tiene un directorio de:

/Volúmenes/AUDIO\ DRIVE/Moved\ Archivos

Así que usé el siguiente comando que encontré en línea...

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

…que hace una de dos cosas según el estado de ánimo en el que se encuentre la Terminal. Mueve los archivos incorrectos al directorio especificado (tal vez debido a los resultados de búsqueda inexactos que tuve al principio) o me da el siguiente error:

-bash: error de sintaxis cerca del token inesperado `)'

Si alguien por ahí me puede ayudar, realmente lo agradecería. Es realmente frustrante saber que si se tratara de una máquina con Windows, todo lo que tendría que hacer es escribir *(1).mp3 en la barra de búsqueda y bloquear la eliminación de todos los resultados, pero honestamente no puedo encontrar una forma de evitar esto en un Mac. Y "NO", no puedo usar una máquina con Windows, ya que es una unidad G de Apple que tiene todo el audio almacenado.

Respuestas (3)

Simplemente use Spotlight en Finder para buscar archivos con *(1).mp3, etc. Comience una nueva búsqueda de Spotlight, agregue una regla de consulta sin procesar y use lo siguiente, luego seleccione todo y elimine.

kMDItemDisplayName=='*(1).mp3'
Gracias por su respuesta, pero esto no parece funcionar, solo devuelve cuatro resultados. Pensé que podría tener que ver con el hecho de que la unidad es externa con la que creé la consulta sin procesar, así que moví la base de datos de música localmente y reindexé los archivos, pero fue en vano. ¿Alguna otra idea?

findespera un patrón, no solo un nombre, por lo que puede obtener mejores resultados con

find /Volumes/AUDIO\ DRIVE/Music\ Database -name '*(1).mp3' -print

Parece que el error en el comando de tu terminal se debe a un mal cortar y pegar. Reemplace el primer " con " , para que el comando final sea el siguiente:

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

Si tiene confianza con la terminal, sugiero instalar fdupes o la bifurcación fdupes-jody y luego:

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

para eliminar duplicados en dir1 .

Espero que esto ayude.

Eso solo coincide con (1).mp3 y no con track_name(1).mp3; se necesita un * y un -name según apple.stackexchange.com/a/152467/237
lo siento, el asterisco se perdió durante el corte y pegado.