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


149

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


25
ls -lfonctionne aussi ...
Daniel Beck


1
@DanielBeck est la date de ls -lla date modifiée ou la date de création?
Bruno Bieri

1
@BrunoBieri C'est la date de modification. Voir man ls. Les systèmes de fichiers Linux typiques ne font même pas le suivi de la date de création - voir la réponse acceptée pour les types de dates suivies.
Daniel Beck

Réponses:


133

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

Au début, j'ai été confondu avec Modify and Change , juste pour clarifier, statles listes de sortie:

  • Accès indique l'heure du dernier accès aux données (par exemple, la lecture).
  • Modifier indique l'heure de la dernière modification des données.
  • Modifier indique l'heure de la dernière modification du statut du fichier.

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: -

65

Utilisez la statcommande pour cela:

$ stat file

27
Si vous voulez seulement la dernière date modifiée (sous une forme lisible par l'homme), utilisezstat -c '%y' file
Adam Taylor

35

Une autre manière plus flexible consiste à utiliser date -r. De man date:

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

Cela a l’avantage de vous permettre de spécifier le format de sortie, par exemple

$ 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

3
Oui, très utile, merci. Voici une fonction bash qui renommera un fichier préfixé par l'heure modifiée: function mvfilestime () {if [x "$ {1}" = "x"]; then echo "mvfilestime: argument manquant du fichier à mv" sinon f = $ (date + "% Y-% m-% d-% H-% M" -r $ {1}) - $ {1} echo mv $ {1} $ {f} mv $ {1} $ {f} fi}
Voyageur

parfait, devrait être la réponse acceptée
AB

15

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

2

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

Installation

pip install httpie --user

Usage

La -hcommande 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 Dateest important car il 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

1) Répertoire des fichiers avec date / heure de la dernière modification

Pour lister les fichiers et afficher les derniers fichiers modifiés en haut, nous allons utiliser les -ltoptions avec lscommande.

$ ls -lt /run
output
total 24
-rw-rw-r--.  1 root utmp 2304 Sep  8 14:58 utmp
-rw-r--r--.  1 root root    4 Sep  8 12:41 dhclient-eth0.pid
drwxr-xr-x.  4 root root  100 Sep  8 03:31 lock
drwxr-xr-x.  3 root root   60 Sep  7 23:11 user
drwxr-xr-x.  7 root root  160 Aug 26 14:59 udev
drwxr-xr-x.  2 root root   60 Aug 21 13:18 tuned

https://linoxide.com/linux-how-to/how-sort-files-date-using-ls-command-linux/


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.