我想根据目录名称而不是unix时间戳删除五天前的目录。
我们假设目录的创建方式与test_2013-05-20-12:23:43
类似。依此类推。
我想删除5天之前的所有目录,即16日之前。
这可能吗?
答案 0 :(得分:0)
如果您不具备文件名标准,请使用此
find /path/to/files* -mtime +5 -exec rm {} \;
请注意,rm,{}和\;
之间有空格解释
第一个参数是文件的路径。这可以是路径,目录或通配符,如上例所示。我建议使用完整路径,并确保在没有exec rm的情况下运行命令以确保获得正确的结果。 第二个参数-mtime用于指定文件的旧天数。如果输入+5,它将找到超过5天的文件。 第三个参数-exec允许您传入诸如rm之类的命令。 {} \;最后需要结束命令。
请阅读此Link了解详情
答案 1 :(得分:0)
这有点棘手,首先要找出5天前的unix时代
$ date --date='5 days ago' +%s
1368599762
然后你可以解析每个目录名称,提取时间部分,在unix纪元时间转换它,并比较if在那个日期之前;如果是,请删除它。
答案 2 :(得分:0)
如果文件名使用的是ISO-8601格式,那么只需进行词法比较就可以了:
oldest=`date -d 'today -5 days' '+test_%F-%T'`
find "$log_dir" -name 'test_*' -print \
| while read f; do test "$f" '>=' "$oldest" || rm "$f"; done
(未经测试;假设文件名不包含换行符)
这是ISO-8601标准化的一个很好的附带好处。 : - )