Touch
將時間戳更改為保持現有時間的特定日期
我有大約 100 個 .jpeg 圖像,我想為其更改文件時間戳。我已經看到了許多使用
touch
根據天數、小時數等修改時間戳的範例,但這些在我的情況下不起作用。我試圖
touch -d "-1969 days ago"
在其中一個文件上使用,但新的時間已經過去了——2021 年 7 月 10 日而不是 2014 年 5 月 25 日。有沒有辦法將目錄中的所有文件時間戳更改為特定日期(2014-05-25),同時保留日期時間戳的時間部分(下例中為下午 2:30)?
例如,2009-01-02 02:30 PM 將時間戳更改為 2014-05-25 2:30 PM。
謝謝你。
您可以使用 和 的組合
date
,touch
這裡是 GNU coreutils。如果我沒看錯,您需要一個特定的日期並保留文件時間,就像在 HMS 中一樣。不要將每個文件設置為比目前值早 300 天。
您可以通過使用將字元串
2014-05-25
與從文件中提取的時間組合來創建該時間date
,例如:$ date +"2014-05-25 %T.%N" -r file.jpg 2014-05-25 18:06:28.277679656
然後通過執行以下操作進行組合:
for f in *.jpg; do touch -d "$(date +"2014-05-25 %T.%N" -r "$f")" "$f"; done
請注意,這可能會與 DST 和時區混淆。
另一種方法可能是
%z
在日期字元串的末尾添加,或添加-u
到date
選項中。TZ=UTC0 touch -d "$(date -u +"2014-05-25 %T.%N" -r "$f")"
測試
在行動之前測試,測試,測試。檢查
ls --full-time
,迴聲而不是觸摸等find ... -printf
也有時間/日期選項。您甚至可以將時間備份到文本文件中。
筆記:
來自問:
- 1969 天前是 2010 年 9 月 29 日。
- 未來 1969 天是 2021 年 7 月 11 日(至少在我的時區)。
- 要從
"-1969 days ago"
目前日期獲得 2014 年 5 月 25 日,必須是 2019 年 10 月 15 日。問題
"-1969 days ago"
是您在時間前面有一個減號。減 + 減 = 加
刪除減號,或刪除該*
ago
*部分。
1969 days ago
是 2010 年 9 月 29 日,原樣-1969 days