Tant que vous êtes le propriétaire du fichier (ou de la racine), vous pouvez modifier l'heure de modification d'un fichier à l'aide de la touch
commande suivante:
touch filename
Par défaut, l'heure de modification du fichier est définie sur l'heure actuelle, mais il existe un certain nombre d'indicateurs, tels que l' -d
indicateur permettant de choisir une date particulière. Ainsi, par exemple, pour définir un fichier comme étant modifié deux heures avant le présent, vous pouvez utiliser les éléments suivants:
touch -d "2 hours ago" filename
Si vous souhaitez plutôt modifier le fichier par rapport à son heure de modification existante, procédez comme suit:
touch -d "$(date -R -r filename) - 2 hours" filename
Si vous souhaitez modifier un grand nombre de fichiers, vous pouvez utiliser les éléments suivants:
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 pour find
ne sélectionner que les fichiers qui vous intéressent. Si vous souhaitez uniquement mettre à jour les temps de modification des fichiers par rapport à l'heure actuelle, vous pouvez le simplifier pour:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Ce formulaire n'est pas possible avec la version relative du fichier, car il utilise le shell pour former les arguments touch
.
En ce qui concerne le moment de la création, la plupart des systèmes de fichiers Linux ne gardent pas trace de cette valeur. Il y a un ctime
associé à des fichiers, mais il trace quand les métadonnées du fichier ont été modifiées pour la dernière fois. Si les autorisations du fichier ne sont jamais modifiées, il peut arriver que la création soit conservée, mais il s’agit d’une coïncidence. Changer explicitement le temps de modification du fichier compte comme un changement de métadonnées, aura donc également pour effet secondaire de mettre à jour le fichier ctime
.
touch -d "2 hours ago" /path/*.txt
par exemple.