我正在嘗試運行 bash 代碼,在執行我認為從日期中減去分鐘的操作時出錯。有一個與互斥有關的錯誤,我找不到相關資訊。
代碼運行以下命令:
datestr=$(date -d -3 minutes -r IOP4/DSC_0041.JPG " %Y%m%d_%H%M")
當我運行時,date -r IOP4/DSC_0041.JPG " %Y%m%d_%H%M"我得到了價值:20220217_2223
因此,我遇到的問題似乎與該-d -3 minutes部分有關。根據我在網上閱讀的內容,我認為如果改為撰寫該命令可能會起作用:
datestr=$(date -d "-3 minutes" -r IOP4/DSC_0041.JPG " %Y%m%d_%H%M")或者
datestr=$(date -d "-3 min" -r IOP4/DSC_0041.JPG " %Y%m%d_%H%M")或者
datestr=$(date -d "now -3 minutes" -r IOP4/DSC_0041.JPG " %Y%m%d_%H%M"),
這些都不起作用;無論我得到什么錯誤:
date: the options to specify dates for printing are mutually exclusive Try 'date --help' for more information.
uj5u.com熱心網友回復:
-d并且-r兩者都給出date了參考值,這就是它引發錯誤的原因,存在沖突。不幸的是,手冊頁沒有提到它們是互斥的。
檔案中的參考日期可以傳遞給第二個date命令
dr=$(date -r myrouter-000.png --iso=seconds)
echo "${dr:0:10}_${dr:11:5}" | tr -d ':-'
20211028_2009
date -d "$(date -r myrouter-000.png --iso=seconds) -9 minutes" " %Y%m%d_%H%M"
20211028_2000
uj5u.com熱心網友回復:
該date命令不能在單個命令中同時執行來自檔案的參考和來自字串的日期,因此您需要將它們分解為單獨的命令。此外,如果您知道要減少日期的分鐘數,那么 CPU 時間會更快,只需將其轉換為秒(3 分鐘 = 180 秒)并從時間戳中減去它。
date -s "@$(($(date -r IOP4/DSC_0041.JPG " %s") - 180))" " %Y%m%d_%H%M"
基本上,該$(date -r IOP4/DSC_0041.JPG " %s")部分將檔案的時間作為 unix 時間戳獲取,即自 1970 年 1 月 1 日以來的秒數。您可以$(($(date -r IOP4/DSC_0041.JPG " %s") - 180))使用本機 bash 內置數學函式輕松地從該數字中減去 180,然后重新解釋(使用date -s "@[number]語法)回傳到陳述句末尾您喜歡的任何日期格式。" %Y%m%d_%H%M"
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/474224.html
標籤:重击
上一篇:將tar檔案提取到單獨的檔案夾中
