2014-04-03 12:45:56 +0000 2014-04-03 12:45:56 +0000
166
166

Get Last Modified Date of File in Linux

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

Réponses (7)

147
147
147
2015-09-21 10:22:09 +0000

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

Au début, j'ai été confondu avec Modify et Change, juste pour clarifier, stat fournit les listes suivantes :

  • Access indique l'heure du dernier accès aux données (e.
  • Modify indique l'heure de la dernière modification des données.
  • Change 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: -
69
69
69
2014-04-03 12:47:41 +0000

Utilisez la commande stat pour cela :

$ stat file
40
40
40
2017-08-31 01:04:43 +0000

Un autre moyen plus flexible est l'utilisation de 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 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
17
17
17
2015-11-16 05:43:54 +0000

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
3
3
3
2019-08-14 16:24:39 +0000

Pour obtenir spécifiquement la date (en utilisant le 3 octobre 2019 par exemple parce que c'était mon dernier anniversaire, voici mon venmo si vous vous sentez amené à me bénir financièrement : @levi_uzodike)

  • stat -c %y file | cut -d' ' -f1 vous donnera 2019-10-03
  • date +%F -r file vous donnera également 2019-10-03
  • date +%D -r file vous donnera 10/03/19
  • date +%x -r file vous donnera probablement soit 10/03/2019, soit 10/03/19 si vous êtes aux États-Unis et soit 03/10/2019, soit 03/10/19 si vous êtes au Royaume-Uni, pour ne citer que quelques exemples (bien sûr, il y a d'autres possibilités)

Ces options de format date sont, à ma connaissance, des combinaisons d'autres options de format. Voici quelques explications tirées de la page de manuel :

nom du mois abrégé de la locale %b (par ex. Jan) nom du mois complet de la locale %B (par ex, Janvier) … %d jour du mois (par ex. 01) %D date ; idem %m/%d/%y %e jour du mois, espace ajouté ; idem %_d %F date complète ; idem %Y-%m-%d … %m mois (01..12) … %x date de la représentation de locale (par ex, 12/31/99) … %y deux derniers chiffres de l'année (00..99) %Y année … Par défaut, les champs numériques des pavés de date comportent des zéros.
Les drapeaux facultatifs suivants peuvent suivre `%‘:

  • (hyphen) do not pad the field
    _ (underscore) pad with spaces
    0 (zero) pad with zeros
    ^ use upper case if possible
    # use opposite case if possible

N.B.: These flags don’t work on the “combo formats” like %F, %D and %x. They are for the “singular field formats”.

Apparently this last flag ( # ) does not work as I’d expect (e.g., if date +%b gives Oct, date +%#b gives OCT as opposed to oCT) I guess this would be useless, but I’d think a lower case option would be more useful. date +%#pdoes turn date +%p which might give PM or AM into pm or am, respectively. So I guess it’s not a 'per-character’ case switch but sets the case of all the characters in the string to the opposite case of the majority of the characters? Also date +%P gives pm or am, but neither date +%^P nor date +%#P change its output. My guess for this case is that %P is just an alias for %#p, and it seems that whenever you add more than one flag, the behavior is undefined/unpredictable ( e.g., date +%0- e gives the same as date +%-e: 3 and date +%-0e gives the same as date +%0e: 03, which makes you think that only the flag next to the letter works or that it goes left to right, but both date +%#^p and date +%^#p give pm or am, [depending on the time of course] ) unless there’s some hidden order of operations? Sorry for digressing…

Also, if you run the command locale -k LC_TIME | grep ^d_fmt, you can see the combo for the specific locale of your system (e.g., d_fmt="%m/%d/%Y").

And you can make your own combo. For example,

  • date +%^b\ %-e\ %Y -r file will give you OCT 3 2019
2
2
2
2017-01-06 10:08:23 +0000

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

Installation

pip install httpie --user

Utilisation

La commande -h ne donne que l'en-tête. Le modèle 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 il indique l'heure du serveur, et non votre heure locale. De plus, tous les serveurs n'envoient pas Last-Modified (par exemple, le super-utilisateur ne semble pas le faire).

2
2
2
2018-11-14 04:22:35 +0000

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

Pour lister les fichiers et afficher les derniers fichiers modifiés en haut, nous utiliserons les options de -lt avec la commande ls.

$ 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/

Questions connexes

6
10
7
5
8