Uzyskaj datę ostatniej modyfikacji pliku w systemie Linux

149

Jestem nowy w Linuksie. Korzystam z wiersza polecenia. Próbuję wyświetlić datę ostatniej modyfikacji pliku. Jak to zrobić w systemie Linux z wiersza polecenia?

użytkownik70192
źródło
25
ls -ldziała również ...
Daniel Beck
1
@DanielBeck to data ls -lmodyfikacji daty lub data utworzenia?
Bruno Bieri,
1
@BrunoBieri To data modyfikacji. Zobaczyć man ls. Typowe systemy plików Linux nawet nie śledzą daty utworzenia - zobacz przyjętą odpowiedź dotyczącą rodzajów dat, które są śledzone.
Daniel Beck

Odpowiedzi:

133

Jak wspomniano w @ edvinas.me, statzawiera różne informacje o pliku, w tym datę ostatniej modyfikacji.

Na początku byłem mylony z Modyfikuj i Zmień , aby wyjaśnić, statlisty wyników:

  • Dostęp pokazuje czas ostatniego dostępu do danych (np. Odczyt).
  • Modyfikuj pokazuje czas ostatniej modyfikacji danych.
  • Zmiana pokazuje czas ostatniej zmiany stanu pliku.

Na przykład:

~ $ 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: -
siostrzeniec
źródło
65

Użyj statdo tego polecenia:

$ stat file
phoops
źródło
27
Jeśli chcesz tylko datę ostatniej modyfikacji (w formie czytelnej dla człowieka), użyjstat -c '%y' file
Adam Taylor
35

Innym sposobem, który jest bardziej elastyczny, jest używanie date -r. Od man date:

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

Ma to tę zaletę, że pozwala określić format wyjściowy, np

$ 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
Krogulec
źródło
3
Tak, bardzo pomocny, dzięki. Oto funkcja bash, która zmieni nazwę pliku, który ma być poprzedzony zmodyfikowanym czasem: function mvfilestime () {if [x "$ {1}" = "x"]; następnie echo „mvfilestime: brak argumentu pliku do mv” else f = $ (data + „% Y-% m-% d-% H-% M” -r $ {1}) - $ {1} echo mv $ {1} $ {f.} Mv $ {1} $ {f.} Fi}
podróżnik,
idealne, powinna być zaakceptowana odpowiedź
AB
15

ls -l powinien wykonać pracę.

Przykład:

#> 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
źródło
2

Jeśli plik znajduje się na innym serwerze internetowym, lubię httpie( docs ).

Instalacja

pip install httpie --user

Stosowanie

-hKomenda daje tylko nagłówek. Wzór jest

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

Przykład:

$ 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

Jest Dateto ważne, ponieważ raportuje czas serwera, a nie czas lokalny. Ponadto nie każdy serwer wysyła Last-Modified(np. Wydaje się, że superużytkownik tego nie robi).

Martin Thoma
źródło
2

1) Wyświetl listę plików z datą / godziną ostatniej modyfikacji

Aby wyświetlić listę plików i wyświetlić ostatnio zmodyfikowane pliki u góry, użyjemy -ltopcji z lspoleceniem.

$ 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
źródło
1

Specjalnie tylko uzyskać datę stat -c %y file | cut -d' ' -f1

Levi Uzodike
źródło