1 votes

Modification de la date de création basée sur le nom du fichier

J'ai téléchargé un certain nombre de mes images Instagram, mais la date de création des fichiers est fixée à l'heure à laquelle j'ai lancé le téléchargement. Ce que j'ai en revanche, c'est la date de création dans le nom du fichier. Ce que je veux faire, c'est prendre la date dans le nom du fichier, que j'ai changé en AAAAMMJJhhmm, et la définir comme date de création de chaque fichier.

J'ai changé la date dans le nom du fichier en YYYYMMDDhhmm parce que c'est le format que l'application touch -t commande aime. Maintenant, tout ce dont j'ai besoin, c'est d'un moyen de prendre les 12 premiers caractères du nom de fichier, de les passer à la commande touch -t comme date à laquelle toucher le fichier, suivie du nom complet du fichier.

J'imagine que cela pourrait être réalisé avec une combinaison de Hazel et d'un shell/AppleScript afin que la date puisse être transmise à partir de chaque image individuelle.

Merci pour toute aide :)

1voto

smithjw Points 342

Après quelques recherches, je suis tombé sur ce petit AppleScript sur Mac OS X Hints. Merci Krioni ! Je suis sûr qu'avec un peu de bricolage, je pourrais le modifier pour qu'il fonctionne avec mes noms de fichiers, mais j'ai juste édité par lots les noms de fichiers d'images pour qu'ils correspondent au script.

on open files_
    repeat with file_ in files_
        tell application "Finder"
            set file_name to name of file_
            set od to AppleScript's text item delimiters
            set AppleScript's text item delimiters to {"_"}
            set new_creation_date to second text item of file_name
            set new_creation_date to new_creation_date & "1000"
            set file_ to POSIX path of file_
            do shell script "touch -t " & new_creation_date & " " & quoted form of file_
            set AppleScript's text item delimiters to od
        end tell
    end repeat
end open

Il recherche simplement le deuxième élément de texte du nom de fichier entre les caractères de soulignement et l'utilise comme date. Il ajoute ensuite "1000" comme le temps jusqu'à la touch commandement. J'espère que cela aidera quelqu'un d'autre.

Le fil de discussion original peut être trouvé aquí .

1voto

touch -t ne change la date de création que si la date cible (modification) est antérieure à la date de création initiale.

for f in *.jpg; do touch -t ${f% *} "$f" && mv "$f" "${f#* }"; done

SetFile -d modifie toujours la date de création.

-d date    Sets the creation date, where date is a string of the
           form: "mm/dd/[yy]yy [hh:mm:[:ss] [AM | PM]]"

for f in *.jpg; do date=$(printf %s "$f" | sed -E 's|^(....)(..)(..)(..)(..).*|\2/\3/\1/ \4:\5|'); SetFile -m "$date" -d "$date" "$f" && mv "$f" "${f#* }"; done

SetFile fait partie du paquet d'outils de ligne de commande qui peut être téléchargé à l'adresse suivante developer.apple.com/downloads ou les préférences de Xcode.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X