0 votos

Fechas de creación de cambios por lotes basadas en nombres de archivos usando setFile

Así que he intentado modificar el comando que he encontrado aquí: para trabajar con mi formato de fecha: 2015-12-31 22.07.29 y el uso de setFile -d en lugar de tocar.

Aquí está mi script

for f in *; do
t="${t%%.*}"
t="${t%%-*}"
m="${t:5:2}"
d="${t:8:2}"
y="${t:0:4}"
h="${t:11:2}"
m="${t:14:2}"
s="${t:17:2}"
date="$m/$d/$y $h$m$s"
setFile -d $date "$f"
done

Yo trate de ejecutar el comando en la carpeta con los archivos jpeg que ha equivocado la fecha de creación pero me sale este error una y otra

-bash: """"??: command not found
ERROR: invalid date/time

Soy un total noob cuando se trata de usar la terminal así que no tengo idea de lo que está mal con el formato y lo que está causando el error de otros. ¿Alguien de aquí sabe de qué estoy haciendo mal?

2voto

ranklord Puntos 664

A mí me parece que el problema está en las citas. Intenta copiar y pegar esto en tu script:

 for f in *; do
t="${t%%.*}"
t="${t%%-*}"
m="${t:5:2}"
d="${t:8:2}"
y="${t:0:4}"
h="${t:11:2}"
m="${t:14:2}"
s="${t:17:2}"
date="$m/$d/$y $h$m$s"
setFile -d $date "$f"
done
 

0voto

Michael Zhou Puntos 167

Aquí está el script se limpian y se escribe como un kornshell script y, a continuación, como un bash secuencia de comandos de shell. En ambos casos utilizamos el shell extendido de glob característica adecuado para que coincida con los nombres de archivo. Estoy asumiendo que los nombres de archivo que comienzan con 4 dígitos, a continuación, un guión, tener dos o más dígitos, a continuación, otro guión y luego dos dígitos seguido por cualquier número de caracteres que termina con el sufijo .jpg.

#! /bin/ksh

for f in {4}([0-9])-{2}([0-9])-{2}([0-9])*.jpg
do
        y=${f:0:4}
        m=${f:5:2}
        d=${f:8:2}
        H=${f:11:2}
        M=${f:14:2}
        S=${f:17:2}

        cr_date="$m/$d/$y $H:$M:$S"

        SetFile -d "$cr_date" "$f"
done


#! /bin/bash

shopt -s extglob

for f in +([0-9])-+([0-9])-+([0-9])*.jpg
do
        y=${f:0:4}
        m=${f:5:2}
        d=${f:8:2}
        H=${f:11:2}
        M=${f:14:2}
        S=${f:17:2}

        cr_date="$m/$d/$y $H:$M:$S"

        SetFile -d "$cr_date" "$f"
done

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