94 votes

Modification de la date de création d'un fichier

Pourriez-vous me dire comment je peux modifier la date de création d'un fichier dans Lion. Je sais qu'il existe la commande touch-t mais elle ne fonctionne pas dans Lion. Quelques personnes ont mentionné un autre moyen, mais je pense qu'elles ont écrit la solution en langage de "codeur" plutôt qu'en langage de profane - quelqu'un pourrait-il répondre à cette question d'une manière qu'un profane peut exécuter ?

Merci beaucoup pour votre aide.

0 votes

L'explication de "coder" que d'autres personnes ont écrite est probablement une référence à "touch". Il faut ouvrir un terminal, se rendre dans le dossier où se trouve le fichier et utiliser la commande touch pour modifier la date de création du fichier.

3 votes

Pour info, vous êtes sur la bonne ligne avec "touch-t", mais il y a un espace entre le h et le -. C'est "touch -t"

138voto

touch -t ne change normalement que les heures de modification et d'accès. Il ne modifie l'heure de création que si l'heure cible est antérieure à l'heure de création initiale.

touch -t 199912312359 file.txt
touch -t $(date -jf %FT%T 1999-12-31T23:59:59 +%Y%m%d%H%M%S) file.txt

SetFile -d modifie toujours l'heure de création.

SetFile -d '12/31/1999 23:59:59' file.txt
SetFile -d "$(GetFileInfo -m test.txt)" file.txt

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 depuis les préférences de Xcode.

0 votes

J'ai écrit une fonction appelée CpCreationDate sur fish : SetFile -d (GetFileInfo -m $argv[1]) $argv[2]

7 votes

-m pour changer le temps de modification.

7 votes

Dans Yosemite, Touch m'a demandé d'utiliser le format +%Y%m%d%H%M.%S (remarquez le point entre les minutes et les secondes)

31voto

armando.sano Points 929

Dans Mac OS X, il semble y avoir quatre horodatages différents associés à un fichier. Ces horodatages ne sont pas toujours mis à jour indépendamment les uns des autres, mais il est possible d'avoir un certain contrôle individuel avec un peu d'attention et l'utilisation de la commande touch , SetFile et chown (ou chmod ). Pour le constater, expérimentons et créons un nouveau fichier depuis l'invite de commande # :

# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

La première date indiquée est la dernière heure d'accès ( atime ), le second est l'heure de la dernière modification ( mtime ), le troisième est le dernier changement d'état ( ctime ), le quatrième est l'heure de création du fichier (naissance, Btime ), voir man lstat .

Pour modifier le temps d'accès ( atime ) à une durée d'utilisation déterminée :

# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

Pour modifier le temps de modification ( mtime ) et l'heure de création du fichier ( Btime ) à une durée d'utilisation déterminée :

# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt

Apparemment, cela met aussi automatiquement à jour l'heure du dernier changement de statut ( ctime ) à l'heure actuelle du système !

Pour modifier uniquement le moment de la création/naissance ( Btime ) à un moment donné, une utilisation (comme proposé par d'autres ci-dessus) :

# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

Pour modifier uniquement l'heure du dernier changement d'état ( ctime ) à l'heure actuelle du système, par exemple :

# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

username est le propriétaire du fichier (comme indiqué par stat o ls -l ). Cela ne change pas la propriété du fichier, mais accède à l'inode du fichier et enregistre l'heure du dernier changement d'état. Malheureusement, il n'est pas possible de spécifier l'heure explicitement ici autrement qu'en changeant l'heure de l'ordinateur...

En résumé, pour pouvoir changer les quatre timestamps indépendamment, on peut utiliser (dans cet ordre pour les 3 derniers) :

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [définir la date du système] chown username <file> [retour à la date normale du système]

(Bien sûr, la réinitialisation de la date système n'est pas une opération sans risque, vous êtes prévenus).

0 votes

Parfois, je me retrouve avec des photos dont les dates sont incorrectes parce que ma GoPro se réinitialise toute seule. Je transfère ces photos sur mon Mac, et je corrige la date en suivant ces instructions, mais lorsque je transfère ces photos sur mon iPhone, la date est toujours erronée. Le seul moyen que j'ai trouvé pour corriger cela est d'utiliser un éditeur EXIF iOS. Existe-t-il encore un autre attribut de date caché quelque part ?

0 votes

@Bowen : Les dates auxquelles vous faites référence dans une photo font partie des données du format de fichier photo lui-même. La date de création, la date de modification etc. des fichiers mentionnés ci-dessus sont celles gérées par le système de fichiers de votre système d'exploitation, elles sont maintenues et mises à jour séparément des données contenues dans le fichier.

0 votes

Vous pouvez utiliser GraphicConverter ( lemkesoft.de/fr/produits/graphicconverter/download ) pour changer la date EXIF interne d'un fichier image en date de création du fichier. Il permet également de traiter des lots. C'est un outil très, très pratique (bien que geek) ! C'est le SEUL outil que j'ai vu qui vous donne un accès illimité à chaque bit de données EXIF/IPTC dans un fichier.

14voto

stuffe Points 25320

La ligne de commande touch fonctionne dans Lion, mais vous avez besoin de quelques informations pour l'utiliser.

Tout d'abord, vous devez le taper, ce n'est pas un utilitaire qui fonctionne graphiquement dans une fenêtre. L'endroit où vous le tapez est une application appelée Terminal . Vous pouvez le trouver dans votre dossier Utilitaires, ou utiliser la recherche Spotlight pour le trouver.

Une fois que vous l'avez lancé, vous obtenez une fenêtre de ligne de commande dans laquelle vous pouvez taper des commandes. Ce n'est pas parce que vous tapez que cela a quelque chose à voir avec le codage, mais pour quelqu'un qui ne connaît pas les commandes "traditionnelles" du système d'exploitation, cela peut sembler un peu intimidant.

Ainsi, la commande s'appelle touchez et après la commande, vous pouvez passer différents paramètres, le seul obligatoire étant le nom du fichier. En tapant la commande suivante, la date de dernière modification du fichier sera fixée à l'heure actuelle :

touch filename

Bien sûr, il se peut que vous deviez d'abord trouver le fichier, ce qui peut nécessiter d'autres commandes pour l'atteindre. la commande cd o Changement de répertoire aide ici :

cd ~/Desktop/files/PDFs
touch filename

Ou bien, vous pouvez simplement ajouter le chemin d'accès complet au fichier dans la commande :

touch ~/Desktop/files/PDFs/filename

Une utilisation plus avancée de la commande touch permet de spécifier l'heure que l'on veut fixer, plutôt que d'utiliser l'heure d'exécution, de fixer les heures d'accès au lieu des heures de modification, etc. C'est ce que permettent des paramètres comme -t et d'autres le font. Certains configurent l'heure pour qu'elle corresponde à celle d'un autre fichier, d'autres pour qu'elle recule ou avance dans le temps d'une quantité X, ( voir ici pour plus de détails), par exemple

touch -d '1 May 2005 10:22' file8

Ce qui suit est de cette page qui est également une référence utile, et un excellent exemple avec quelques conseils pour ceux qui ne sont pas à l'aise avec les emplacements de fichiers en ligne de commande

Notez que cette opération ne modifiera les attributs date de modification et date de création que si votre fichier a été créé après la date que vous avez saisie. En effet, un fichier ne peut pas être modifié avant d'avoir été créé. S'il a été créé avant la date que vous avez définie, seule la date de modification sera modifiée.

Comment modifier l'attribut date de création d'un fichier ?

  1. Ouvrez l'application Terminal ( /Applications/Utilities/Terminal.app ) ou si vous préférez, utilisez iTerm.

  2. Tapez ceci dans le Terminal (sans appuyer sur entrée/retour) en insérant la date au format de YYYYMMDDhhmm :

    touch -t 201212211111
  3. Ouvrez une fenêtre du Finder et localisez le fichier que vous souhaitez modifier et faites-le glisser dans la fenêtre du Terminal, il insérera alors l'emplacement du fichier en utilisant la terminologie de la ligne de commande. Voici un exemple de ce qui doit être tapé dans le Terminal à ce stade :

    touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg

    201212211111 dans l'exemple ci-dessus représente "21 décembre 2012 11:11 AM".

2 votes

Mais touch modifie la date de modification, et non la date de création du fichier.

1 votes

Il peut faire les deux. Cela dépend des paramètres.

3 votes

Utilisation de touch avec les paramètres que vous avez donnés ci-dessus a changé les dates de modification mais pas de création pour mon fichier de test.

9voto

De très bons conseils ici, en particulier le dernier (de Lauri Ranta, répondu le 21 août à 15:21). Perfekt !

J'utilise maintenant un simple flux de travail Automator pour modifier plusieurs fichiers par lots :

  1. Obtenez les articles sélectionnés de Finder
  2. Exécuter le shell script, "Pass input : as arguments"

Le shell script est :

for f in "$@"
do
    SetFile -d "$(GetFileInfo -m "$f")" "$f" 
done

Cela fonctionne comme un charme.

0 votes

Tout d'abord - merci pour l'astuce. J'ai dû modifier légèrement votre solution, car elle fonctionne maintenant aussi avec Monterey 12.3.x. for f in "$@" do touch -t 202204171112 "$f" done il suffit de changer la date pour celle que vous préférez. (Plus de détails sur la commande tactile ici : phoenixnap.com/kb/touch-command-in-linux#set-specific-timestamp )

-1voto

Le moyen le plus simple que j'ai trouvé est de créer un nouveau dossier, de copier tous les sous-dossiers du dossier grisé dans le nouveau dossier, et voilà, le nouveau dossier n'est pas grisé. Vous pouvez même faire cela dans le finder.

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