Tengo muchas fotos / videos llamados: 2012-04-05 19.21.34.jpg
Sin embargo, la fecha de creación ha cambiado completamente.
¿Hay alguna forma de reemplazar la fecha de creación con la información del nombre del archivo?
Tengo muchas fotos / videos llamados: 2012-04-05 19.21.34.jpg
Sin embargo, la fecha de creación ha cambiado completamente.
¿Hay alguna forma de reemplazar la fecha de creación con la información del nombre del archivo?
Si la convención de nomenclatura es la misma para todos los archivos en el mismo directorio, a continuación, en la Terminal, cd
a directory
y use el siguiente comando compuesto:
for f in *.*; do touch -t $(sed -e 's:\.[a-z].*::' -e 's:\.::' -e 's:[- ]::g'<<<"$f") "$f"; done
Explicación de algunos de los compuestos de comandos:
for f in *.*; do ...; done
- Bucle a través de los archivos.touch -t [[CC]YY]MMDDhhmm[.SS]
- Cambiar el acceso y modificación de los tiempos a la hora especificada en lugar de la hora actual del día.$(...)
- La sustitución de comandos, reemplaza el comando(s) con el resultado, literalmente.sed
- Editor de flujo para el filtrado y transformación de texto.
−e script
- Agregar la secuencia de comandos para la ejecución de comandos.'s:\.[a-z].*::'
- Este tiras de la extensión del archivo, por ejemplo: 2012-04-05 19.21.34.jpg
2012-04-05 19.21.34
's:\.::'
- Esto elimina la primera .
en, por ejemplo,: 2012-04-05 19.21.34
2012-04-05 1921.34
's:[- ]::g'
- Esto elimina -
y el espacio , por ejemplo,: 2012-04-05 1921.34
201204051921.34
Cual es el formato perfecto para la -t
opción en la touch
comando.
Por favor, tenga en cuenta que el original comando compuesto se forma un poco floja. En otras palabras, puede ser escrito de forma expresa de destino .jpg
ficheros donde la extensión es menor caso, como en tu ejemplo, por ejemplo,: 2012-04-05 19.21.34.jpg
*.*
en for f in *.*; do ...; done
con: in *.jpg
[a-z].*
en sed -e 's:\.[a-z].*::'
con: jpg
for f in *.jpg; do touch -t $(sed -e 's:\.jpg::' -e 's:\.::' -e 's:[- ]::g'<<<"$f") "$f"; done
Desde la -t
opción se utiliza con la touch
comando, cualquier nombre de archivo que no produce el resultado esperado, el escenario del peor caso con ella escrito un poco flojo es que no va a impactar en la no-archivos de destino y simplemente el error en los archivos con:
touch: out of range or illegal time specification: [[CC]YY]MMDDhhmm[.SS]
Así, escrito un poco floja o de manera más específica, el resultado final será el mismo y, sólo los archivos con la convención de nomenclatura por ejemplo 2012-04-05 19.21.34.jpg
será tocado.
NOTA: Siempre asegúrese de tener una copia de seguridad actual antes de mayoristas de procesamiento de archivos.
AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.