下面的脚本工作正常,生成日志。
#!/bin/bash
dir_to_check='/root/file_path.txt'
CY=`date +"%Y"`
TS=`date "+%Y-%m-%d"`
cmd="/$CY"
cat $dir_to_check | while read output
do
find ${output}/$cmd -type d -mtime +30 >> /root/file_$TS
for path in $(cat /root/file_$TS);
do
rm -rvf $path | tee -a /root/purge_$TS
done
done
文件中的示例位置cat /root/file_path.txt
,所有这些路径都有多个子目录,我们需要2022
分别从名为去年目录和今年目录 2023 的目录中删除 30 天的旧数据。
/data/storage/
/hana/storage/
/SAP/storage/
这里的问题是从 1 月份开始,2022 文件夹中没有任何内容被删除。需要您的帮助才能将其删除。
帮助我验证数组中的变量,我想通过在上面的脚本中添加以下内容来添加当前年份和前一年的数组,如下所示。
PY=`date +%Y -d "-1 years"`
declare -a arr=("$cmd" "$cmd1")
value=21
cmd1="/$PY"
find ${output}"${arr[@]}" -type d -mtime +30 >> /root/file_$TS
相反,将其视为错误。
到目前为止我已经在下面尝试过了。
#!/bin/bash
dir_to_check='/root/file_path.txt'
CY=`date +"%Y"`
PY=`date +%Y -d "-1 years"`
value=21
olddays=`date --date="21 days ago" +"%Y"`
TS=`date "+%Y-%m-%d"`
cmd="/$CY"
cmd1="/$PY"
cat $dir_to_check | while read output
do
if [ $PY == $olddays ];
then
find ${output}"$cmd1" -type d -ctime +21 >> /root/file_$TS
else
find ${output}"$cmd" -type d -ctime +21 >> /root/file_$TS
fi
done
for path in $(cat /root/file_$TS);
do
rm -rvf $path | tee -a /root/purge_$TS
done