Linux
獲取特定格式的文件修改時間(yyyymmddhh24miss)
我想以特定格式獲取文件的修改時間。
我怎樣才能做到這一點 ?
我知道
stat -c %x find.txt
但我需要這種格式:
yyyymmddhh24miss
如果重要,
ksh
我正在使用。Linux 2.6.18-406.el5 x86_64
你可以使用類似的東西:
/bin/date +%Y%m%d%H%M%S -d "$(/usr/bin/stat -c %x find.txt)"
使用 GNU 工具:
find file -prune -printf '%TY%Tm%Td%TH%TM%TS\n'
或者
date -r file +%Y%m%d%H%M%S.%N
(但請注意,對於符號連結,它顯示的是符號連結目標的修改時間,而不是符號連結本身(這可能與關心符號連結的 mtime 的人一樣,參見
-L
withfind
做同樣的事情))。如果您
ksh
是ksh93
並且它是在date
啟用內置功能的情況下建構的:command /opt/ast/bin/date -m -f %Y%m%d%H%M%S.%N file
(
command /opt/ast/bin/date
呼叫date
綁定到的內置函式/opt/ast/bin/date
,如果你/opt/ast/bin
在前面添加,$PATH
當你通過名字呼叫它們時,這些內置函式將被自動呼叫)。如果您不關心小數部分,請刪除
.%N
or forfind
,替換%TS
為%.2TS
.請注意,時間將以目前時區給出。由於此日期格式不包括 UTC 偏移量,因此它可能不明確。例如在我的英國大陸時區:
$ date -r file1 Sun 30 Oct 01:00:00 BST 2016 $ date -r file2 Sun 30 Oct 01:00:00 GMT 2016
這兩個文件的修改時間相差 3600 秒,一個在更改為冬季時間之前,一個在更改為冬季時間之後,但仍處於相同的掛鐘時間(因為該時鐘已在間隔內移回一小時)。
$ find file? -prune -printf '%TY%Tm%Td%TH%TM%TS\n' 20161030010000.0000000000 20161030010000.0000000000
要獲得明確的時間,您可以包含 UTC 偏移量:
$ find file? -prune -printf '%TY%Tm%Td%TH%TM%TS%Tz\n' 20161030010000.0000000000+0100 20161030010000.0000000000+0000
或以 UTC 給出時間:
$ TZ=UTC0 find file? -prune -printf '%TY%Tm%Td%TH%TM%TS\n' 20161030000000.0000000000 20161030010000.0000000000