1 votos

leer la fecha de creación a partir del nombre de archivo y cambiar - lote

Tengo archivos con nombres como "clip-2014-01-31 18;50;15.mp4", es decir, "clip-YYY-MM-DD hh;mm;ss.mp4".

¿Cómo puedo ajustar la fecha y la hora de creación según cómo se especifica en el nombre de archivo para todos los 2000 archivos que tengo en una carpeta? Conozco el comando touch -t cambia la fecha de creación, pero no sé cómo extraer la información de fecha/hora del nombre del archivo y ponerla en un comando para que se haga automáticamente para todos los archivos.

3voto

Tienes suerte porque los números en tus nombres de archivo están en el orden justo touch -t necesidades.

Este comando en la terminal funcionará. Sólo tienes que asegurarte de que tu directorio de trabajo está configurado en la carpeta que quieres hacer:

for f in *; do
    t=$(echo $f | sed -E 's/([A-z]*-)|([ ,;])|(\..*)//g' | sed -E 's/(.*)(..)/\1.\2/')
    touch -t $t "$f"
done

Para descomponerlo:

for f in * establece la variable f al nombre de cada archivo en el directorio, a su vez.

do pone todo hasta que el done en el for el bucle.

t=$(…) establece la variable t a la salida de los comandos entre paréntesis.

La primera sed El comando coincide con cualquier letra antes de un - el símbolo, el - ; y el space y la extensión del archivo, y los borra.

El segundo sed El comando inserta un período entre los valores mm y ss, como el tacto lo requiere.

touch -t $t $f cambia los tiempos de modificación y creación de los archivos al valor de t en el archivo f .

Probado en algunos archivos falsos con cualquier versión de sed naves con Mavericks.

0 votos

@mcanwo por favor puedes marcar esta respuesta como aceptada. Esto ayuda a recompensar al que responde y también señala que esta pregunta tiene una solución que funciona: meta.stackexchange.com/preguntas/5234/

AppleAyuda.com

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.

Powered by:

X