linux - Mac OS 或 Linux - 更改年份但保持月日小时和秒数不变

标签 linux macos date touch timestamp

我需要递归目录树并将所有文件的时间戳的 YEAR ONLY 部分更新为特定年份。我不知道如何通过触摸来做到这一点。我不能使用 touch -A,因为目标文件有很多不同的年份,所以相对调整已经结束。

我只想将所有年份更新到 2013 年,而不管它们目前是什么,但需要保持其余时间戳不变。这可能吗?

感谢任何帮助。 谢谢, 史蒂夫。

最佳答案

#!/bin/sh

#This is to ensure that the output of all the commands will be in english
export LANG=C

#Gets the modification date from the file, you can change it to get any other timestamp instead.
MODDATE=$(stat $1 | fgrep Modify | cut -d" " -f2)

YEAR=2013

#Sets month and day as the old date
MONTH=$(echo $MODDATE | cut -d- -f2)
DAY=$(echo $MODDATE | cut -d- -f3)

NEWDATE=$YEAR-$MONTH-$DAY

#Sets the new date
touch -d $NEWDATE $1

关于linux - Mac OS 或 Linux - 更改年份但保持月日小时和秒数不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16624130/

相关文章:

java - 如何根据日期是否大于今天的日期来呈现 JSF 组件?

mysql - 让 mySQL MONTH() 使用前导零?

linux - 在文件中查找搜索字符串并打印同一行中的下一个单词

linux - 重新启动系统前如何检查系统?

linux - 删除目录中除列表中提到的文件之外的所有文件

swift - 如何在 Mac OS 上截屏 NSView?

xcode - DEVELOPER_DIR 是否需要在环境中保持设置状态?

java - 字符串到日期的转换(一切似乎都很好但失败了)

linux - 如何在shell中加入多个进程?

c++ - 允许用户命名文件名但将其保存在预定位置 - OSX