GNU/Linux >> Tutoriels Linux >  >> Linux

Comment éditer un fichier sans changer ses horodatages sous Linux

Comme vous le savez peut-être, les horodatages "heure d'accès" et "heure de modification" d'un fichier seront remplacés par l'heure actuelle après l'édition ou la modification du fichier. Parfois, vous souhaiterez peut-être conserver les anciens horodatages pour une raison quelconque, même après avoir édité ou modifié les fichiers. Ce bref guide explique comment éditer un fichier sans changer ses horodatages sous Linux.

Si vous ne savez pas grand-chose sur les horodatages de fichiers Linux, consultez le guide suivant.

  • Horodatages de fichiers Linux expliqués avec des exemples

Modifier un fichier sans changer ses horodatages sous Linux

Les horodatages d'un fichier peuvent être mis à jour en utilisant touch commande. Les horodatages sont également mis à jour lorsque nous ajoutons manuellement du contenu dans un fichier ou en supprimons des données. Si vous souhaitez modifier le contenu des fichiers sans modifier ses horodatages, il n'existe aucun moyen direct de le faire. Mais c'est possible !

Nous pouvons utiliser l'un des touch option de la commande -r (référence) pour conserver les horodatages du fichier après l'avoir édité ou modifié. Le -r L'option est utilisée pour définir les horodatages d'un fichier sur les valeurs d'horodatage d'un autre.

J'ai un fichier texte nommé ostechnix.txt . Regardons les horodatages de ce fichier avec stat commande :

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:47:55.992788870 +0530
 Birth: -

Comme indiqué précédemment, si nous modifions le contenu ou les métadonnées de ce fichier, les horodatages changeront également.

Créez maintenant un nouveau fichier vide, par exemple ostechnix.timestamp , avec les mêmes horodatages que ostechnix.txt fichier en utilisant touch commande :

$ touch -r ostechnix.txt ostechnix.timestamp

Vérifiez les horodatages du nouveau fichier :

$ stat ostechnix.timestamp 
  File: ostechnix.timestamp
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d	Inode: 4328645     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-12 19:47:55.992788870 +0530
Modify: 2020-11-12 19:47:55.992788870 +0530
Change: 2020-11-12 19:48:48.934235300 +0530
 Birth: -

Voir? atime des deux fichiers et mtime les horodatages sont les mêmes !

Effectuez maintenant les modifications dans le fichier principal, c'est-à-dire ostechnix.txt . Comme vous l'avez deviné, les horodatages du fichier principal vont changer.

Enfin, copiez les horodatages du nouveau fichier, c'est-à-dire ostechnix.timestamp au fichier principal :

$ touch -r ostechnix.timestamp ostechnix.txt

Maintenant, le fichier principal a ses anciens horodatages avant d'être édité/modifié.

Veuillez noter que nous ne pouvons pas conserver les horodatages de l'heure de changement (ctime). Il sera toujours mis à jour à l'heure actuelle.

TL;DR

Créez un nouveau fichier avec les mêmes horodatages que le fichier principal avec touch commande, effectuez les modifications dans le fichier principal et définissez les horodatages du nouveau fichier sur le fichier principal avec -r option.

J'espère que cela vous aidera.


Linux
  1. Déplacer des fichiers sur Linux sans mv

  2. Comment gérer les capacités des fichiers Linux

  3. Comment trouver un fichier sous Linux

  4. Comment créer un fichier d'échange sous Linux

  5. Comment renommer un fichier sous Linux ?

Fichier hôte Linux :comment le modifier et l'utiliser ?

Comment rendre un fichier exécutable sous Linux

Comment vérifier la somme de contrôle sur Linux

Comment renommer un ou plusieurs fichiers sous Linux

Comment créer un lien symbolique vers un fichier sous Linux

Comment ouvrir une image ISO sans graver sur un disque sous Linux