我有以下命令(可以工作):
for f in /home/backups/*; do mv -n "$f" "${f}_$(date -r "$f" +'%Y%m%d')"; done
例如:在/home/backups
中,我有一个文件backup
。执行将其重命名为backup_20180608
(当前日期)的命令。
我希望的是减去1天。我的意思是文件应该是backup_20180607
。
我如何才能做到这一点?
发布于 2018-06-09 04:00:13
拆分以获得更好的可读性:
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')
From man date
日期,-d =字符串
显示由字符串描述的时间,而不是'now‘
这里,STRING
将是date -r "$f"
报告最后修改时间。
- 1 days
从将格式化为%Y%m%d
的日期中减去一天
复制和粘贴的一行代码:
for f in /home/backups/*; do mv -n "$f" "${f}_$(date -d "$(date -r "$f") -1 days" +'%Y%m%d')"; done
https://stackoverflow.com/questions/50767475
复制相似问题