Bash删除名称中的旧文件日期

时间:2014-04-30 19:02:19

标签: bash svn

我有一个脚本可以将我的svn repo备份到另一台服务器(设置为每天运行的cronjob)

#!/bin/bash

svnadmin dump /path/to/repo | gzip > /backups/`date +%F`_repo.svn.gz

scp /backups/`date +%F`_repo.svn.gz user@ip:/backups/svn/

示例文件名:

2014-04-30_repo.svn.gz,2014-04-29_repo.svn.gz,2014-04-28_repo.svn.gz

使用bash,如何删除超过7天的备份?

2 个答案:

答案 0 :(得分:1)

这应该有效:

find /path/to/files -name '*_repo.svn.gz' -mtime +7 | xargs rm

答案 1 :(得分:0)

如果您试图完全依赖日期的文件名,那么就像这样:

TODAY=$(date '+%s')

for f in /backup/*_repo.svn.gz ; do
    DATESTR=$(echo $f | sed "s/^\/backup\/\(.*\)_repo\.svn\.gz/\1/")
    FILEDATE=$(date -d "$DATESTR" '+%s')

    if ((FILEDATE + 7*24*60*60 < TODAY)) ; then
        rm $f
    fi
done