Question Obtenir la dernière date de modification de fichier sous Linux


Je suis nouveau sur Linux. J'utilise la ligne de commande. J'essaie de voir la date de la dernière modification d'un fichier. Comment puis-je le faire sous Linux à partir de la ligne de commande?


95
2018-04-03 12:45


origine


ls -l travaille aussi ... - Daniel Beck♦
Duplicata de superuser.com/questions/612099/ - Oldskool
@DanielBeck est la date de ls -l la date de modification ou la date de création? - Bruno Bieri
@BrunoBieri C'est la date de modification. Voir man ls. Les systèmes de fichiers Linux classiques ne suivent même pas la date de création - voir la réponse acceptée pour les types de dates conservés. - Daniel Beck♦


Réponses:


Comme mentionné par @ edvinas.me, stat vous indique diverses informations sur le fichier, y compris la dernière date de modification.

Au début, j'étais confondu avec Modifier et Changement, juste pour clarifier, stat listes de sortie:

  • Accès affiche l'heure du dernier accès aux données (par exemple, lecture).
  • Modifier affiche l'heure de la dernière modification de données.
  • Changement indique l'heure à laquelle l'état du fichier a été modifié pour la dernière fois.

Par exemple:

~ $ touch foo
~ $ stat foo
File: ‘foo’
Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 410397      Links: 1
Access: (0644/-rw-r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:06:11.343616258 +0200
Modify: 2015-09-21 12:06:11.343616258 +0200
Change: 2015-09-21 12:06:11.343616258 +0200
Birth: -

~ $ echo "Added bar to foo file" >> foo
~ $ stat foo
File: ‘foo’
Size: 42            Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 410654      Links: 1
Access: (0644/-rw-r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:09:31.302713093 +0200
Birth: -

~ $ chmod 444 foo
~ $ stat foo
File: ‘foo’
Size: 42            Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 410654      Links: 1
Access: (0444/-r--r--r--)  Uid: (80972/ etomort)   Gid: (18429/  eem_tw)
Access: 2015-09-21 12:09:31.298712951 +0200
Modify: 2015-09-21 12:09:31.298712951 +0200
Change: 2015-09-21 12:10:16.040310543 +0200
Birth: -

78
2017-09-21 10:22





Utilisation stat commande pour cela:

$ stat file

54
2018-04-03 12:47



Si vous voulez juste la dernière date de modification (sous une forme lisible par l’homme), utilisez stat -c '%y' file - Adam Taylor


ls -l devrait faire le travail.

Exemple:

#> ls -l /home/TEST/
total 16

-rw-r--r--   1 rfmas1   nms          949 Nov 16 12:21 create_nd_lists.py

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 enb_list

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 nb_list

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 nodes_ip.txt

-rw-r--r--   1 rfmas1   nms            0 Nov 16 12:35 rnc_list

13
2017-11-16 05:43





Une autre façon plus flexible consiste à utiliser date -r. De man date:

-r, --reference=FILE
       display the last modification time of FILE

Cela présente l'avantage de vous permettre de spécifier le format de sortie, par ex.

$ date -r foo
Thu Aug 31 10:36:28 AEST 2017
$ date -r foo -R
Thu, 31 Aug 2017 10:36:28 +1000
$ date -r foo -u
Thu Aug 31 00:36:28 UTC 2017
$ date -r foo +%s
1504139788

13
2017-08-31 01:04



Oui, très utile, merci. Voici une fonction bash qui renommer un fichier à préfixé par le temps modifié: fonction mvfilestime () {if [x « $ {1} » = « x »]; then echo "mvfilestime: Missing argument du fichier à mv" else f = $ (date + "% Y-% m-% d-% H-% M" r $ {1}) - $ {1} echo $ mv {1} $ {f} mv $ {1} $ {f} fi} - Traveler


Si le fichier est sur un autre serveur Web, j'aime httpie (docs).

Installation

pip install httpie --user

Usage

le -h commande ne donne que l'en-tête. Le motif est

http -h [url] | grep 'Last-Modified\|Date'

Exemple:

$ http -h https://martin-thoma.com/author/martin-thoma/ | grep 'Last-Modified\|Date'
Date: Fri, 06 Jan 2017 10:06:43 GMT
Last-Modified: Fri, 06 Jan 2017 07:42:34 GMT

le Date est important car cela indique l'heure du serveur, pas votre heure locale. En outre, tous les serveurs n’envoient pas Last-Modified (par exemple, le superutilisateur ne semble pas le faire).


2
2018-01-06 10:08