Comando de terminal para mover un número de archivos que contienen corchetes a otra carpeta o papelera

1

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 un gran número de duplicados dentro de estas carpetas. Hay más de 3,000 carpetas de artistas y en cada carpeta de artistas 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 cambiado el nombre del archivo siguiente con un (1) .mp3, o si tiene más de un duplicado, se ha cambiado el nombre de (2) .mp3, (3 ) .mp3 y así sucesivamente hasta que renombra el último número de duplicados encontrados para esa pista en particular.

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

  

/ Volumes / AUDIO \ DRIVE / Music \ Database

Así que usé el comando ...

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

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

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

  

/ Volumes / AUDIO \ DRIVE / Moved \ Files

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 dependiendo de en qué humor se encuentre 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 me puede ayudar, realmente lo apreciarí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 eliminar todos los resultados, pero honestamente no puedo encontrar una forma de evitar esto en una Mac. Y "NO" no puedo usar una máquina con Windows, ya que es una unidad Apple G que tiene todo el audio almacenado en ella.

    
pregunta Chris Cleary 21.10.2014 - 21:33

3 respuestas

2

find espera un patrón no solo un nombre, por lo que podría obtener mejores resultados con

find /Volumes/AUDIO\ DRIVE/Music\ Database -name '*(1).mp3' -print
    
respondido por el nohillside 23.10.2014 - 11:45
1

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 formato y use la siguiente, luego seleccione todo y elimine.

kMDItemDisplayName=='*(1).mp3'
    
respondido por el grg 21.10.2014 - 22:41
0

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

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

Si confía en el terminal, sugiero instalar fdupes o la horquilla fdupes-jody y luego:

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

para eliminar duplicados en dir1 .

Espero que esto ayude.

    
respondido por el fabiosirna 24.03.2015 - 16:11

Lea otras preguntas en las etiquetas