Renombrar files / nombres a granel, ¿alguna solución más inteligente?

Tengo pocos miles de files para cambiar el nombre.

Lo que pasa es que tengo los old file names y los new file names como columnas en una spreadsheet . Sin renombrarlos uno por uno. ¿Hay una mejor manera de hacer esto?

Aprecia cualquier ayuda. He intentado lo siguiente con poca satisfacción:

  • File Renamer : Esto me permite cambiar el nombre de los files especificados de una list externa en .txt. Sin embargo, la versión de testing limita a 500 elementos. No deseo pagar $ 20 solo por este trabajo manual.

    Sin embargo, podría haberlos instalado en computadoras separadas o en una máquina virtual.

  • Automator: obtenga elementos especificados> Renombrar>

    No tan efectivamente como pensé que sería.

Solo estoy buscando una solución más inteligente. Apreciar cualquier ayuda

  • exportar a un file CSV: dos columnas, separadas por ; (suponiendo que no hay ; en un nombre de file)
  • Terminal abierto
  • cambiar a la carpeta que contiene los files
  • ejecutar perl -pi -e 's/\r\n/\n/;' LISTOFNAMES.csv perl -pi -e 's/\r\n/\n/;' LISTOFNAMES.csv para corregir problemas CRLF
  • ejecutar while IFS=\; read old new; do mv "$old" "$new"; done < LISTOFNAMES.csv while IFS=\; read old new; do mv "$old" "$new"; done < LISTOFNAMES.csv

PD: Esto sobrescribirá los files existentes si el nuevo nombre ya existe.

PPS: testing esto en una carpeta temporal con solo unos pocos files (y asegúrate de tener una copy de security reciente)

He encontrado que esta es una de las forms más simples:

  • En una columna de spreadsheet, concatenar: "cp oldfilename newfilename" para crear una copy con el nuevo nombre.
    • Utilice "mv oldfilename newfilename" para replace los files antiguos en lugar de copyr.
  • Copie esta columna concatenada a un file de text y guárdela como rename.sh en la carpeta con los files a cambiar de nombre.
  • Abra la terminal, navegue a la carpeta con los files que se van a renombrar y ejecute bash rename.sh

Hace un par de años escribí una publicación de blog sobre cómo realizar operaciones de files masivos . El primer paso fue copyr la list de files de los resultados de búsqueda en una spreadsheet. Como ya tienes la spreadsheet, estás muy cerca de tener un script que pueda hacer el cambio de nombre por ti.

Supongamos que tiene nombres antiguos en la columna A y nuevos nombres en la columna B.

Escriba lo siguiente en la primera celda de la columna C:

 mv 

Escriba lo siguiente en la primera celda de la columna D:

 =concatenate("""",A1,"""") 

Escriba lo siguiente en la primera celda de la columna E:

 =concatenate("""",B1,"""") 

Indique la aplicación de la spreadsheet a la columna "Rellenar> Abajo" C, D y E.

Luego copie todas las filas de datos de las columnas C, D y E. Pegue el text copydo en un editor de text. Deberías leer la fila:

 mv "old file name" "new file name" 

Este command moverá / cambiará el nombre del file denominado "nombre de file anterior" por "nombre de file nuevo". Alterar los nombres de los files entre comillas dobles permite nombres de files que contienen espacios.

Si está satisfecho con los commands, copie y pegue el text completo en el shell en Terminal.app

El procedimiento es less elegante que tener un script para procesar su spreadsheet o CSV. Sin embargo, tiene la ventaja de que tienes la oportunidad de verificar dos veces los commands antes de ejecutarlos. Al trabajar a partir de resultados de búsqueda, puede get fácilmente valores de otras columnas (por ejemplo, date de modificación, dimensiones de image, etc.) y trabajarlos en los nuevos nombres de file.