Bonjour
mariemad
Il existe un exécutable
UNIX qui permet de modifier la
date de création et/ou la
date de modification d'un fichier à sa guise : le binaire
SetFile (il n'est pas livré en natif dans les répertoires de binaires d'
OS X, mais fait partie des lots de binaires supplémentaires des
Command Line Developer Tools). Pour t'éviter la peine de te le procurer de cette façon, je te l'ai mis en téléchargement dans le dossier public de ma
DropBox ici ☞
SetFile.zip☜.
Tu n'as qu'à le télécharger (
4 Ko ) et le dézipper sur ton
Bureau de session. Si tu veux l'installer dans un dossier à exécutables
UNIX, tu peux le faire en allant à :
Applications/Utilitaires pour lancer le «
Terminal». Dans la fenêtre qui s'affiche, fais un copier-coller de la commande :
Bloc de code:
sudo mv Desktop/SetFile /usr/bin
et ↩︎ (presse la touche "Entrée" du clavier pour activer la commande) --> une demande de
password s'affiche (commande
sudo) --> tape ton mot-de-passe
admin à l'aveugle - aucun caractère ne se montrant à la frappe - et derechef ↩︎ --> le binaire
SetFile disparaît de ton Bureau et est désormais loggé at: /
usr/bin [Attention ! commande valide directement pour l'OS «
Mountain Lion 10.8» ; pour «
El Capitan 10.11», commande rejetée si le
SIP est actif.]
Tu enchaînes par la commande :
Bloc de code:
sudo chown 0:0 /usr/bin/SetFile
et ↩︎ (pas besoin de redonner ton mot--de-passe dans les 5' après une première authentification
sudo) --> les propriétés sur
SetFile sont restaurées à
user=root &
group=wheel comme requis. Terminé pour les préliminaires.
--------------------
Je t'explique maintenant une opération possible utilisant
SetFile.
- a) tu t'arranges pour avoir toutes les photos dont tu veux changer les dates de création et de modification contenues dans un seul répertoire global, que tu crées pour l'occasion et qui peut donc englober toute une arborescence de dossiers et de sous-dossiers sans aucun problème => ainsi, tu peux agir d'un seul coup sur le lot de toutes tes photos. Sinon, il faudrait cibler la commande une fois sur tel dossier, puis la repasser sur un autre...
Pour raisonner sur un exemple, je vais supposer (ce que je viens d'effectuer sur mon propre Mac dans «El Capitan») qu'il s'agit d'un dossier global intitulé PHOTOS situé sur mon Bureau de session (tu auras compris que la localisation peut être autre, c'est ici un exemple simplificateur). Mon dossier PHOTOS contient des tas de sous-dossiers, avec des dossiers subalternes, et en fin d'arborescence, des tas de fichiers de photos de formats différents.
----------
- b) supposons à présent que tu veuilles (toujours pour donner un exemple) changer la
date de création de tous ces fichiers de photos à celle d'aujourd'hui : le
26 Avril 2016 à 11H 30 ; et que tu veuilles également changer la
date de modification des mêmes fichiers à celle d'aujourd'hui encore : le
26 Avril 2016 à 11H 30 (mais ce pourrait être une date différente : je simplifie mon exemple pour la clarté).
Alors voilà la forme de la commande opératoire intégrant ces paramètres exemplaires :
Bloc de code:
sudo find Desktop/PHOTOS -type f -exec SetFile -d "04/26/2016 11:30" -m "04/26/2016 11:30" {} \;
et ↩︎ --> après une pincée de secondes requises par l'opération, chaque fichier de photo a désormais le
26 Avril 2016, 11H 30 à la fois comme
date de création et de
modification.
----------
Tu remarqueras que cette commande se décompose en 2 parties :
sudo find Desktop/PHOTOS -type f => l'exécutable find (trouver) est appelé en droits root (sudo) sur la cible du dossier PHOTOS résidant sur le Bureau, avec comme option : le type d'objet constitué par des fichiers (f = file)
-exec SetFile -d "04/26/2016 11:30" -m "04/26/2016 11:30" {} \; => le résultat de la recherche est passé pour exécution au binaire SetFile qui va être activé avec 2 options successives : l'option -d (comme date = date de création) et l'option -m (comme modification = date de modification).
Chacune de ces options est suivie, entre "", de l'énoncé de la date souhaitée, selon la syntaxe suivante : "mm/dd/yyyy hh:mm" où => mm = valeur numérique du mois de 01 à 12 ; dd = valeur numérique de jour de 01 à 31 ; yyyy = valeur numérique de l'année du siècle dans les limites épochales UNIX de 1970 à 2038 ; hh = valeur numérique de l'heure de 01 à 24 ; mm = valeur numérique de la minute de 00 à 59. Ainsi, le 1er Août 1998 à 4H 30 de l'après-midi s'indique par : "08/01/1998 16:30" => tu vois l'idée ?
Le {} \; terminal est une façon d'indiquer que l'opération doit porter sur le lot complet {} avec le \; ponctuant cette commande à rallonge.
--------------------