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?

utilisateur70192
la source
25
ls -lfonctionne aussi ...
Daniel Beck
1
Duplicata de superuser.com/questions/612099/…
Oldskool
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: -
neveu
la source
65

Utilisez la statcommande pour cela:

$ stat file
phoops
la source
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
Sparhawk
la source
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
Linh Hoang
la source
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).

Martin Thoma
la source
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/

Jon Harper
la source
1

Pour obtenir simplement la date stat -c %y file | cut -d' ' -f1

Levi Uzodike
la source