Shell-Script
將文件的日期修改為比特定文件夾中的任何其他文件更舊
我想修改文件文件的日期,以使其比目錄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-epoch
GNU touch 支持日期語法。它不是由 POSIX 指定的。POSIX 未指定該
stat
命令,它是 GNU coreutils 的一部分,請參閱https://stackoverflow.com/questions/27828585/posix-analog-of-coreutils-stat-command。所以這個解決方案應該適用於 Linux 系統,但可能不適用於一般的 UNIX 系統。