Text-Processing

如何將日期和時間放在文件名中?

  • January 12, 2021

我正在嘗試執行一個命令,並希望將日期和時間放在輸出文件名中。

這是我想執行的範例命令。

md5sum /etc/mtab > 2016_4_25_10_30_AM.log

日期時間格式可以是任何有意義的下劃線。如果不能使用 AM 和 PM,即使是 UTC。

如果您想使用目前日期時間作為文件名,您可以使用date命令替換

$ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"

這導致文件2016_04_25_10_30_AM.log(儘管具有目前日期時間)以 md5 雜湊/etc/mtab作為其內容創建。

請注意,包含 12 小時格式時間戳的文件名可能不會按照您希望的方式按名稱排序。您可以改用 24 小時格式的時間戳來避免此問題。

如果您不需要使用該特定日期格式,則可以考慮使用符合 ISO 8601 的日期時間格式。如何生成有效的 ISO 8601 日期時間表示的一些範例包括:

$ date +"%FT%T"
2016-04-25T10:30:00

$ date +"%FT%H%M%S"
2016-04-25T103000

$ date +"%FT%H%M"
2016-04-25T1030

$ date +"%Y%m%dT%H%M"
20160425T1030

如果您想要“更安全”的文件名(例如,為了與 Windows 兼容),您可以省略時間部分的冒號。

請記住,以上範例均假定本地系統時間。如果您需要跨時區一致的時間表示,則應指定時區偏移量或 UTC。您可以通過在呼叫的格式部分中使用“%z”來獲得符合 ISO 8601 的時區偏移,date如下所示:

$ date +"%FT%H%M%z"
2016-04-25T1030-0400

您可以date通過指定-u標誌並將“Z”添加到日期時間字元串的末尾以指示時間是 UTC 來獲取呼叫中的 UTC 時間,如下所示:

$ date -u +"%FT%H%MZ"
2016-04-25T1430Z

引用自:https://unix.stackexchange.com/questions/278939