Shell-Script

將文件的日期修改為比特定文件夾中的任何其他文件更舊

  • July 18, 2019

我想修改文件文件的日期,以使其比目錄dir中存在的日期更早。時間差的值無關緊要,因為目標只是為了讓它變老而讓它變老。

為此,我需要touch file使用比dir中存在的日期值更早的日期值。如何恢復dir中最舊文件的日期值並從中減去一定的時間(例如 1 秒)?

您可以通過兩步過程做到這一點:複製時間戳,然後將其調整為較舊:

#find the eldest file in dir
eldest=$(ls -t dir | tail -1)

#duplicate the time
touch -r "dir/$eldest" myfile

#make the file one second older
touch -A -000001 myfile

find您可以使用’s-printf或 with獲取時間戳,stat並對它們進行排序以獲得最舊的。然後減去您想要的並將其用作touch. find具有列印小數秒的缺點,必須將其刪除以進行計算。

oldest=$(stat -c "%Y" dir/*|sort|head -1)
touch -d "@$((oldest-1))" dir/file
# or touch -d "@$((oldest-60))" file # subtract 1 min to see the difference in normal ls -l output.

-d @seconds-since-epochGNU touch 支持日期語法。它不是由 POSIX 指定的。

POSIX 未指定該stat命令,它是 GNU coreutils 的一部分,請參閱https://stackoverflow.com/questions/27828585/posix-analog-of-coreutils-stat-command

所以這個解決方案應該適用於 Linux 系統,但可能不適用於一般的 UNIX 系統。

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