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

时间:2018-06-08 19:44:32

标签: linux

我有以下命令(有效):

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

拆分以获得更好的可读性:

SELECT n.*, nmax.cnt
FROM notifications n JOIN
     (SELECT item_id,  MAX(id) as max_id, COUNT(item_id) as cnt
      FROM notifications
      GROUP BY item_id
     ) nmax
     ON n.item_id = nmax.item_id AND nmax.id = nmax.max_id
WHERE n.uid = 3 AND n.seen = 0  -- removed the single quotes because these are probably numbers
ORDER BY n.id DESC;

重要的部分:

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

From $(date -d "$(date -r "$f") -1 days" +'%Y%m%d')

  

-d, - date = STRING

     

显示时间由STRING描述,而不是'现在'

此处man date将是STRING报告的最后修改时间。

date -r "$f"从日期中减去一天,格式为- 1 days

<小时/> 复印和粘贴的单行:

%Y%m%d