5 votes

Changer la date de création du fichier en date de modification en utilisant le terminal

J'ai donc un groupe d'images dont les dates de création sont incorrectes mais dont les dates de création réelles sont les mêmes que les dates de modification actuelles. Est-il possible de corriger cela en utilisant une commande batch dans le terminal ? Je me suis amusé avec les commandes setFile + stat mais ça ne marche pas vraiment car je suis nul avec le terminal. Est-ce que quelqu'un ici connaît la bonne façon de procéder ?

Est-il possible d'intégrer cette fonction dans une commande de recherche ? De sorte que toutes les images contenant "IMG" reçoivent ce traitement, mais pas les autres ?

Merci d'avance !

11voto

glenn jackman Points 1869

Pour utiliser la réponse de @user3439894 avec find utilisez le -exec command {} + et de placer la boucle for dans un sh script :

find some/path -iname \*.img -exec sh -c 'for f in "$@"; do m="$(GetFileInfo -m "$f")"; SetFile -m "$m" -d "$m" "$f"; done' sh {} +

Le 2ème "sh" deviendra le $0 à l'intérieur du shell créé, et les noms de fichiers .img seront les paramètres positionnels $1, $2, ....

3voto

user3439894 Points 52496

Si vous avez les deux SetFile y GetFileInfo vous pouvez régler le date de création à celui de la date de modification sur .IMG en procédant comme suit :

Sur Terminal le premier changer de répertoire cd à l'emplacement de la cible .IMG des fichiers.

cd /path/to/target/files

Ensuite, exécutez ce qui suit commandement composé :

for f in *.[iI][mM][gG]; do m="$(GetFileInfo -m "$f")"; SetFile -m "$m" -d "$m" "$f"; done

Note : C'est toujours une bonne idée de faire d'abord un test sur un petit échantillon de l'échantillon. fichiers cibles copié dans un autre dossier et vérifiez d'abord les résultats, puis passez à l'étape suivante. les fichiers originaux . Il faut également toujours effectuer des sauvegardes régulières avant de procéder, par exemple en utilisant Time Machine ou un autre logiciel de sauvegarde.


Si vous n'avez pas GetFileInfo et que vous voulez utiliser stat puis directement après do remplacer :

m="$(GetFileInfo -m "$f")";

Avec :

m="$(stat -f'%Sm' -t "%m/%d/%Y %H:%M:%S" "$f")";

En vous donnant l'intégralité commandement composé :

for f in *.[iI][mM][gG]; do m="$(stat -f'%Sm' -t "%m/%d/%Y %H:%M:%S" "$f")"; SetFile -m "$m" -d "$m" "$f"; done

Remarque : Cela suppose que vous avez au moins une .IMG dans le fichier répertoire sinon cela provoque une erreur non fatale, ce qui signifie que rien n'a changé :

stat: *.[iI][mM][gG]: stat: No such file or directory
ERROR: invalid date/time

Pour utiliser find voir la réponse de Glenn Jackman.

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