Existe-t-il un moyen de modifier la date à laquelle un fichier a été modifié/créé (qui est affichée dans Nautilus ou avec la commande ls -l) ? Idéalement, je cherche une commande qui puisse modifier l'estampille de la date et de l'heure d'un ensemble de fichiers pour les avancer ou les retarder d'un certain temps (par exemple, +8 heures ou -4 jours, etc.).
Tant que vous êtes le propriétaire du fichier (ou root), vous pouvez changer le temps de modification d'un fichier en utilisant la commande touch
:
touch filename
Par défaut, cette commande définit l'heure de modification du fichier à l'heure actuelle, mais il existe un certain nombre d'options, comme l'option -d
qui permet de choisir une date particulière. Ainsi, par exemple, pour définir un fichier comme étant modifié deux heures avant l'heure actuelle, vous pouvez utiliser ce qui suit :
touch -d "2 hours ago" filename
Si vous souhaitez plutôt modifier le fichier par rapport à son heure de modification actuelle, la commande suivante devrait faire l'affaire :
touch -d "$(date -R -r filename) - 2 hours" filename
Si vous voulez modifier un grand nombre de fichiers, vous pouvez utiliser ce qui suit :
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Vous pouvez modifier les arguments de find
pour ne sélectionner que les fichiers qui vous intéressent. Si vous voulez seulement mettre à jour les temps de modification des fichiers par rapport au temps présent, vous pouvez simplifier ceci à :
find DIRECTORY -exec touch -d "2 hours ago" {} +
Cette forme n'est pas possible avec la version relative au temps de modification des fichiers car elle utilise le shell pour former les arguments de touch
.
En ce qui concerne le temps de création, la plupart des systèmes de fichiers Linux ne gardent pas de trace de cette valeur. Il y a un ctime
associé aux fichiers, mais il suit la date de la dernière modification des métadonnées du fichier. Si les permissions du fichier ne sont jamais modifiées, il se peut que l'heure de création soit conservée, mais c'est une coïncidence. Changer explicitement l'heure de modification d'un fichier compte comme un changement de métadonnées, et aura donc pour effet secondaire de mettre à jour le ctime
.
Merci pour votre aide. Ceci a fonctionné pour moi :
Dans le terminal, allez dans le répertoire de date-edit. Puis tapez :
find -print | while read filename; do
# do whatever you want with the file
touch -t 201203101513 "$filename"
done
Vous verrez un ">" ; après avoir appuyé sur entrée, sauf pour la dernière fois -> "done" ;.
Note : Vous pouvez changer "201203101513" ;
"201203101513" ; = est la date que vous voulez pour tous les fichiers de ce répertoire.
[Voir ma page web] [1]