Touch

將時間戳更改為保持現有時間的特定日期

  • February 19, 2016

我有大約 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。

謝謝你。

您可以使用 和 的組合datetouch這裡是 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在日期字元串的末尾添加,或添加-udate選項中。

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

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