Chci zjistit datum vytvoření konkrétního souboru, ne datum modifikace nebo datum přístupu.
Zkoušel jsem to pomocí ls -ltrh
a stat filename
.
Přijatá odpověď:
stat -c '%w' file
na souborových systémech, které uchovávají čas vytvoření.
Všimněte si, že na Linuxu to vyžaduje coreutils
8.31, glibc
2.28 a verze jádra 4.11 nebo novější.
Standard POSIX definuje pouze tři odlišná časová razítka, která mají být uložena pro každý soubor:čas posledního přístupu k datům, čas poslední úpravy dat a čas poslední změny stavu souboru.
Moderní linuxové souborové systémy, jako je ext4, Btrfs, XFS (v5 a novější) a JFS, ukládají čas vytvoření souboru (neboli čas narození), ale používají jiné názvy pro příslušné pole (crtime
v ext4/XFS, otime
v Btrfs a JFS). Linux poskytuje rozhraní systémového volání statx(2) pro získání času narození souboru pro souborové systémy, které jej podporují od verze jádra 4.11. (Takže i když byla do souborového systému přidána podpora doby vytváření, některá nasazená jádra ji nepodporovala okamžitě, ani po přidání nominální podpory pro danou verzi souborového systému, např. XFS v5.)
Jak zdůraznili Craig Sanders a Mohsen Pahlevanzadeh, stat
podporuje %w
a %W
specifikátory formátu pro zobrazení času narození souboru (ve formátu čitelném pro člověka, respektive v sekundách od epochy) před coreutils
verze 8.31. Nicméně coreutils
stat
používá statx()
je-li k dispozici systémové volání pro načtení času narození pouze od verze 8.31.
Před coreutils
verze 8.31 stat
přistupoval k času narození pomocí get_stat_birthtime()
poskytuje gnulib (v lib/stat-time.h
), který získá čas narození z st_birthtime
a st_birthtimensec
pole stat
struktura vrácená stat()
systémové volání. Zatímco například systémy BSD (a v rozšíření OS X) poskytují st_birthtime
přes stat
, Linux ne. To je důvod, proč stat -c '%w' file
výstupy -
(označující neznámý čas vytvoření) v systému Linux před coreutils
8.31 i pro souborové systémy, které interně ukládají čas vytvoření.
Jak zdůrazňuje Stephane Chazelas, některé souborové systémy, jako je ntfs-3g, odhalují dobu vytvoření souboru prostřednictvím rozšířených atributů souboru.