用于根据创建日期删除文件夹的Shell脚本

时间:2018-09-07 05:41:30

标签: linux shell unix find

我的文件夹名称采用以下日期格式

31082018
04092018
01092018
05092018
02092018
03092018
06092018

每天创建该文件夹,并修改旧文件夹。 我试图找到一个Unix脚本,该脚本将删除除三个基于创建日期新创建的文件夹以外的所有文件夹。 如果我使用的是find . -type d -mtime +2 -exec rm -rf {} \;
,这对我没有帮助,因为较旧的文件夹正在被修改,并且-mtime和-ctime将它们视为最新文件夹。

例如,在我上面提到的日期中,除了名称为04092018、05092018和06092018的目录外,其他所有目录都应删除。

我正在尝试使用以下脚本获取所需的结果,但无法在以下外壳脚本

中替换 $ last 变量
#! /bin/bash
last=$(date -d '-2 days' +%d%m%Y);
find /orabackup/RMAN/SYMETRA -type d -exec bash -c '
    cd ${1%/*}
    dir=${1##*/} day=${dir:0:2} month=${dir:2:2} year=${dir:4:4}
    [[ $dir =~ [0-9]{8} && $year$month$day <  $last ]] && echo rm -rf "$1"
' -- {} \;

0 个答案:

没有答案