Modifier la date de création d'un fichier

JPTK

Membre vénérable
Club iGen
19 Septembre 2002
21 884
2 904
47
Grenoble/Le Creusot
jamrek.com
:coucou:

Je pensais pouvoir le faire facilement depuis les infos du doc et puis non... et là je vois qu'il n'y a rien d'aisé pour le faire. J'ai tout de même trouvé FileUtilsCM, sur cette page, si ça peut servir à d'autres.

On ne peut pas choisir la date mais seulement la modifier automatiquement via le menu contextuel à la date et heure de la manip, ce qui me convient.

Si jamais vous aviez mieux je suis preneur.

Merci.
 
Je n'ai pas d'outil graphique à te proposer mais tu peux utiliser dans le Terminal la commande touch.

Par exemple, imagine que tu as un fichier 'brol.txt' dans le dossier 'tmp' de ta maison, en exécutant :
Bloc de code:
touch -t 200511251820 ~/tmp/brol.txt
tu vas affecter au fichier la date et l'heure suivantes : le 25 novembre 2005 à 18h20.
 
Je n'ai pas d'outil graphique à te proposer mais tu peux utiliser dans le Terminal la commande touch.

Par exemple, imagine que tu as un fichier 'brol.txt' dans le dossier 'tmp' de ta maison, en exécutant :
Bloc de code:
touch -t 200511251820 ~/tmp/brol.txt
tu vas affecter au fichier la date et l'heure suivantes : le 25 novembre 2005 à 18h20.

AH NAN PAS LE TERMINALTOR !!!
Triste10.gif
 
Je n'ai pas d'outil graphique à te proposer mais tu peux utiliser dans le Terminal la commande touch.

Par exemple, imagine que tu as un fichier 'brol.txt' dans le dossier 'tmp' de ta maison, en exécutant :
Bloc de code:
touch -t 200511251820 ~/tmp/brol.txt
tu vas affecter au fichier la date et l'heure suivantes : le 25 novembre 2005 à 18h20.

Est-il possible d'appliquer la commande touch sur tous les fichiers qui se trouvent dans des sous dossiers ?
 
Est-il possible d'appliquer la commande touch sur tous les fichiers qui se trouvent dans des sous dossiers ?
Bonsoir

Oui, si c'est la même date pour tous, sinon pour des millions de fichiers avec des dates différentes c'est de l'esclavage.

A une condition, qu'elle soit supérieure a la date de création.

@+
 
Dernière édition:
:up:

Histoire de faire mon pinailleur, je complèterais ainsi :
Bloc de code:
find . -print0 | xargs -0 touch
afin de gérer proprement les fichiers avec espaces et caractères particuliers.
 
Merci pour les précisions. :up: Oui, c'est effectivement mettre à la même date des fichiers.

Le code suivant réalisera donc un mise à la date de tous les fichiers dans les sous dossiers ?
Bloc de code:
find . -print0 | xargs -0 touch

Si je comprends bien :
find . : liste tous les fichiers dont le nom a au moins un caractère
-print0 : dirige un affichage vers l'écran
| xarg : prend les fichiers donnés par find . et leur applique le traitement touch

Par contre, j'ai deux questions :
- A quoi sert le -0 ?
- Est-ce find par lui-même qui va dans les sous dossiers ?
 
  • find . -print0 : liste tous les fichiers à partir du répertoire '.', c-à-d le répertoire courant, et, dans la liste générée, utilise le code ASCII 0x00 comme séparateur des éléments (option -print0);
  • le pipe (tuyau) transmet les sorties de la commande à sa gauche en entrée de la commande à sa droite ;
  • xargs -0 touch : exécute la commande touch aux éléments passés en entrée à la commande xargs (ici : les éléments que lui fournit le pipe), et l'option '-0' précise que ces éléments sont séparés par le code ASCII 0x00.
L'avantage est ici que xargs se charge de grouper les éléments pour d'une part éviter de lancer trop souvent la commande touch et d'autre part pour ne pas dépasser la taille limite d'une commande passée au système (libellé du binaire, options et paramètres).
 
  • J’aime
Réactions: Pascal_TTH
et les espaces dans les noms de fichier il en fait quoi ?

parce que en général quand tu as un nom de fichier du genre "mon fichier blabla.txt" bah ca marche pas ca merde

quand tu tape la commande il faut lui spécifier qu'il y a les espaces en retapant le nom de fichier comme ceci "mon\ fichier\ blabla.txt"

---------- Nouveau message ajouté à 16h08 ---------- Le message précédent a été envoyé à 16h05 ----------

OK je me suis auto répondu, il sont parfaitement géré,

Merci pour le hint :)
 
Ils sont gérés par le fait que le séparateur entre les éléments renvoyés par find est 0x00 (code null) au lieu de l'espace. C'est l'intérêt de l'option print0.
 
Bonjour,

J'ai un petit soucis de photos avec un décalage horaire de 2h sur des photos.

J'ai pu décaler les dates de prises de vue des photos dans Photos 1.5... mais ce benêt semble trier les photos par date de création et non leur date de prises de vue, ce qui fait que, mises à côté de photos prises à la bonne heure, les photos dont j'ai modifié l'heure ne sont pas regroupées par leurs dates de prises de vue. Ca rend proprement insupportable le tri de photos prises en parallèle avec 2 appareils différents.

Du coup je cherche un moyen d'appliquer massivement un décalage dans la date de création de fichiers, et c'est là que je suis tombé sur ce topic.

Par rapport à ce qui est expliqué ci-dessus, dans mon cas ce sont des dates différentes pour chaque fichiers, est-ce qu'il y a moyen de remplacer l'attribut de la date fixe pour qu'il s'appuie sur la date de chaque fichier en retirant 2h ?

Merci pour votre aide
 
Bloc de code:
for file in ~/Pictures/"repertoire"/*.jpg
do
  date_modif=$(stat -t "%Y%m%d%H%M.%S" "$file" | cut -d " " -f 10 | sed 's/"//g')
  nouvelle_date=$(date -v-2H -j -f "%Y%m%d%H%M.%S" "$date_modif" "+%Y%m%d%H%M.%S")
  touch -a -m -t $nouvelle_date "$file"
done

Tu remplaces ~/Pictures/"repertoire" par le nom du répertoire contenant tes fichiers et ça devrait être bon
 
  • J’aime
Réactions: Oracle