Comando por lotes para cambiar la fecha de creación de cada archivo para que coincida con la información en el nombre del archivo

Tengo una carpeta con varios cientos de archivos de video. Todos los nombres de los archivos están en este formato:

2011-08-27 11.18.00

Lamentablemente, la 'Fecha de creación' de cada archivo es la fecha en que se convirtió (una fecha de 2014), no la fecha en que se tomó originalmente (especificada en el nombre del archivo).

Descubrí que el operador touch -t se puede usar para cambiar la fecha de creación de un solo archivo.

ingrese la descripción de la imagen aquí

A continuación: archivo en el que he cambiado con éxito la fecha de creación (con el comando anterior) y el archivo para el que la fecha de creación sigue siendo incorrecta.

ingrese la descripción de la imagen aquí

¿Alguien puede ayudar con el código de terminal que extraería la información AAAAMMDDhhmm de cada nombre de archivo y la usaría para la operación touch -t para ese archivo, en una operación por lotes?

Me gustaría que la fecha / hora de creación sea correcta para que cuando importe a mi biblioteca, cada archivo esté en el lugar correcto en la línea de tiempo.

Mac OS: El Capitán 10.11.5

Versión de terminal: 2.6.1

Gracias a todos.

Respuestas (1)

  • terminal abierta
  • escriba cd(incluido el espacio final) y arrastre la carpeta que contiene los archivos a renombrar a la ventana de Terminal (la carpeta probablemente sea Desktop/PRIMARYVIDEOS, por lo que el comando debería verse como cd /Users/Andrew/Desktop/PRIMARYVIDEOS)
  • presione Entrar
  • escribir (o copiar/pegar)

    for f in *; do t=$(echo $f | sed -E 's/[-. mov]//g'); echo touch -t $t "$f"; done
    
  • presione Entrar
  • si (y solo si) esto da como resultado una lista de touchcomandos que se ven bien, escriba (o copie/pegue)

    for f in *; do t=$(echo $f | sed -E 's/[-. mov]//g'); touch -t $t "$f"; done
    
  • presione Entrar
@andyp Se ve bien, pruébalo :-)
Hola @patrix ¡Estamos llegando a alguna parte! Su primer bit de código en cuatro archivos en una carpeta de prueba terminó con algo como esto para cada uno: touch -t 20110107141300 2011-01-07 14.13.00.mov. Sin embargo, cuando ejecuté la segunda línea de código después de esto, obtuve este error para cada: toque: fuera de rango o especificación de tiempo ilegal: [[CC]YY]MMDDhhmm[.SS] Los nombres de los archivos bajan al segundo, que toca no puede tratar. La parte superior del código no ha cortado la información sobre los segundos, lo que creo que ha causado el error.
Si ayuda @patrix, parece que la información de segundos en cada nombre de archivo es siempre 00 (por lo que cada nombre de archivo siempre se ve así: AAAA-MM-DD hh.mm.00.mov)
Hola, @patrix: eliminé la información en el nombre del archivo sobre los segundos para cada uno de mis cuatro archivos de prueba (por ejemplo, el primer código ahora produce: touch -t 201101071413 2011-01-07 14.13.mov) ¡y el código anterior funciona PERFECTAMENTE! ¿Hay alguna manera de modificarlo para que pueda ejecutarlo en todos mis cientos de otros archivos sin tener que modificar cada nombre de archivo para eliminar los segundos?
¡Hurra! Utilizo la función de cambio de nombre por lotes del buscador para reemplazar .00.mov con absolutamente nada. Esto permitió que el código anterior funcionara para todos los cientos de archivos en mi carpeta principal. Tu @patrix eres una leyenda. Gracias.