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

Letztes Änderungsdatum der Datei unter Linux abrufen

Ich bin neu unter Linux. Ich benutze die Befehlszeile. Ich versuche, das letzte Änderungsdatum einer Datei anzuzeigen. Wie mache ich das unter Linux von der Befehlszeile aus?

Antworten (7)

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

Wie von @edvinas.me erwähnt, enthält stat verschiedene Informationen über die Datei, einschließlich des letzten Änderungsdatums.

Zuerst wurde ich zur Verdeutlichung mit Ändern und Ändern verwechselt, stat gibt Listen aus:

  • Zugriff zeigt den Zeitpunkt des letzten Datenzugriffs (e. g. Lesen).
  • Ändern zeigt den Zeitpunkt der letzten Datenänderung an.
  • Ändern zeigt den Zeitpunkt der letzten Änderung des Dateistatus an.

Zum Beispiel:

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

Verwenden Sie dazu den Befehl stat:

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

Eine andere Möglichkeit, die flexibler ist, ist die Verwendung von date -r. Von man date:

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

Dies hat den Vorteil, dass Sie das Ausgabeformat angeben können, z.B.

$ 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 sollte die Arbeit erledigen.

Beispiel:

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

Aufbauend auf dem Kommentar von @Adam Taylor in der Antwort von @phoops und @Sparhawk

Um speziell nur das Datum zu erhalten (unter Verwendung des 3. Oktober 2019 als Beispiel, weil es mein letzter Geburtstag war, hier ist mein venmo, wenn Sie sich veranlasst fühlen, mich finanziell zu segnen: @levi_uzodike)

  • stat -c %y file | cut -d' ' -f1 gibt Ihnen 2019-10-03
  • date +%F -r file gibt Ihnen auch 2019-10-03
  • date +%D -r file gibt Ihnen 10/03/19
  • date +%x -r file gibt Ihnen wahrscheinlich entweder 10/03/2019, oder 10/03/19, wenn Sie in den USA sind und entweder 03/10/2019, oder 03/10/19, wenn Sie in Großbritannien sind, um nur ein paar Beispiele zu nennen (natürlich gibt es noch mehr Möglichkeiten)

Diese date-Formatoptionen sind, soweit ich weiß, Kombinationen von anderen Formatoptionen. Hier sind einige Erläuterungen aus der man page :

%b Gebietsschema abgekürzter Monatsname (z.B. Jan) %B Gebietsschema voller Monatsname (z.B, Januar) … %d Tag des Monats (z.B. 01) %D Datum; dasselbe wie %m/%d/%y %e Tag des Monats, Leerzeichen aufgefüllt; dasselbe wie %_d %F vollständiges Datum; dasselbe wie %Y-%m-%d … %m Monat (01..12) … %x Datumsrepräsentation des Gebietsschemas (z.B, 31.12.99) … %y letzte zwei Ziffern des Jahres (00..99) %Y Jahr … … Standardmäßig füllt das Datum numerische Felder mit Nullen auf.
Die folgenden optionalen Flags können folgen `%‘:

  • (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 Datum +%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 Datum +%-e: 3 and Datum +%-0e gives the same as Datum +%0e: 03, which makes you think that only the flag next to the letter works or that it goes left to right, but both Datum +%#^p and Datum +%^#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,

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

Wenn sich die Datei auf einem anderen Webserver befindet, gefällt mir httpie docs ).

Installation

pip install httpie --user

Verwendung

Der Befehl -h gibt nur den Header an. Das Muster ist

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

Beispiel:

$ 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

Die Date ist wichtig, da sie die Serverzeit und nicht Ihre Ortszeit ausgibt. Außerdem sendet nicht jeder Server Last-Modified (z.B. scheint Superuser dies nicht zu tun).

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

1) Verzeichnis “List Files” mit Datum/Uhrzeit der letzten Änderung

Um Dateien aufzulisten und die zuletzt geänderten Dateien oben anzuzeigen, verwenden wir die Optionen -lt mit dem Befehl 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/

Verwandte Fragen

6
10
7
5
5