在Linux上,如何将包含当前日期的文件名减去1天

在Linux上,如何将包含当前日期的文件名减去1天,linux,Linux,我有以下命令(有效): 例如: 在/home/backups中,我有文件backup。执行将其重命名为备份的命令(当前日期) 我希望减去1天。我的意思是文件应该是backup\u 20180607 如何实现这一点?拆分以提高可读性: for f in /home/backups/*; do mv -n "$f" "${f}_$(date -d "$(date -r "$f") -1 days" +'%Y%m%d')"; done 重要的部分是: $(date -d "$(date -r

我有以下命令(有效):

例如: 在
/home/backups
中,我有文件
backup
。执行将其重命名为备份的命令(当前日期)

我希望减去1天。我的意思是文件应该是
backup\u 20180607


如何实现这一点?

拆分以提高可读性:

for f in /home/backups/*;
   do mv -n "$f" "${f}_$(date -d "$(date -r "$f") -1 days" +'%Y%m%d')";
done
重要的部分是:

$(date -d "$(date -r "$f") -1 days" +'%Y%m%d')
人工日期

-d、 --日期=字符串

显示由字符串描述的时间,而不是“现在”

这里的
字符串将是
日期-r“$f”
报告的最后一次修改时间

-1天
从格式为
%Y%m%d的日期中减去一天


一个用于复制和粘贴的衬里:

for f in /home/backups/*; do mv -n "$f" "${f}_$(date -d "$(date -r "$f") -1 days" +'%Y%m%d')"; done

堆栈溢出不是代码编写服务。请显示不起作用的代码。由于堆栈溢出对您隐藏了关闭原因:寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。
for f in /home/backups/*; do mv -n "$f" "${f}_$(date -d "$(date -r "$f") -1 days" +'%Y%m%d')"; done