在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