Vous pouvez modifier l'heure de modification d'un fichier à l'aide de la commande touch
:
touch filename
Par défaut, cela définira l'heure de modification du fichier à l'heure actuelle, mais il existe un certain nombre d'indicateurs, tels que l'indicateur -d
, pour choisir une date particulière. 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 modifier le fichier par rapport à son heure de modification existante, voici ce qui devrait être fait:
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 en find
pour sélectionner uniquement les fichiers qui vous intéressent. Si vous souhaitez uniquement mettre à jour les délais de modification des fichiers par rapport à l'heure actuelle, vous pouvez simplifier ceci:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Ce formulaire n'est pas possible avec la version relative à l'heure 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 suivent pas cette valeur. Il y a un ctime
associé aux fichiers, mais il suit la dernière modification des métadonnées du fichier. Si les autorisations du fichier ne sont jamais modifiées, il se peut que le moment de la création soit conservé, mais il s'agit d'une coïncidence. La modification explicite de l'heure de modification du fichier compte pour un changement de métadonnées, ce qui aura également pour effet secondaire de mettre à jour le ctime
.