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

Krijg Laatste Gewijzigde Datum van Bestand in Linux

Ik ben nieuw in Linux. Ik gebruik de opdrachtregel. Ik probeer de laatste gewijzigde datum van een bestand te bekijken. Hoe doe ik dat in Linux vanaf de commandoregel?

Antwoorden (7)

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

Zoals vermeld door @edvinas.me, stat vertelt je verschillende informatie over het bestand inclusief de laatst gewijzigde datum.

In het begin was ik verward met Modify en Change, ter verduidelijking, stat uitvoerlijsten:

  • Toegang toont het tijdstip van de laatste gegevenstoegang (e. g. lezen).
  • Wijzigen toont het tijdstip van laatste gegevensaanpassing.
  • Wijzigen toont het tijdstip waarop de bestandsstatus voor het laatst is gewijzigd.

bijvoorbeeld:

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

Gebruik stat opdracht voor dat:

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

Een andere manier die flexibeler is, is het gebruik van date -r. Van man date:

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

Dit heeft het voordeel dat u het uitvoerformaat kunt specificeren, bijv.

$ 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 moet het werk doen.

Voorbeeld:

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

_Bouwen van @Adam Taylor ‘s commentaar in @phoops ’s antwoord en @Sparhawk ’s antwoord.

Om precies te zijn _krijg de datum (met behulp van 3 oktober 2019 voor voorbeelden omdat het mijn laatste verjaardag was, hier is mijn venmo als je het gevoel hebt dat het leidde tot mij financieel te zegenen: @levi_uzodike)

  • stat -c %y file | cut -d' ' -f1 geeft je 2019-10-03
  • date +%F -r file geeft je ook 2019-10-03
  • date +%D -r file geeft je 10/03/19
  • date +%x -r file geeft je waarschijnlijk ofwel 10/03/2019, of 10/03/19 als je in de V.S. bent en ofwel 03/10/2019, of 03/10/19 als je in de V.K. bent, om maar een paar voorbeelden te noemen (er zijn natuurlijk meer mogelijkheden)

Deze date formaat opties zijn, naar mijn mening, combinaties van andere formaat opties. Hier zijn enkele verklaringen van de man pagina :

%b locale’s verkorte maandnaam (bijv. Jan) %B locale’s volledige maandnaam (bijv, Januari) … %d dag van de maand (bv. 01) %D datum; zelfde als %m/%/%y %e dag van de maand, gevuld met ruimte; zelfde als %_d %F volledige datum; zelfde als %Y-%m-%d … %m maand (01..12) … %x locale’s datumweergave (bv, 12/31/99) … %y laatste twee cijfers van het jaar (00..99) %Y year … Standaard, datumvelden numeriek met nullen.
De volgende optionele vlaggen kunnen volgen `%’:

  • (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

Als het bestand op een andere webserver staat, vind ik httpie docs ) leuk.

Installatie

pip install httpie --user

Gebruik

Het -h-commando geeft alleen de header. Het patroon is

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

Voorbeeld:

$ 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

De Date is belangrijk omdat dit de servertijd rapporteert, niet uw lokale tijd. Ook stuurt niet elke server Last-Modified (b.v. superuser lijkt het niet te doen).

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

1) Bestandenlijst met laatst gewijzigde datum/tijd

Om bestanden op te sommen en de laatst gewijzigde bestanden bovenaan te tonen, gebruiken we -lt-opties met het commando 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/