2016-12-01 23 views
0

我已经创建了一个脚本,用于从位于&之前生成的位置删除文件,该文件名将被重定向到文本文件。但是现在我想保留每月最后一次生成的文件。想要存储月份的最后一个日期,以便在上次日期创建的文件不应被删除

#!/bin/bash 
function syslog() 
{ 
echo -e "**********************************************************" 
echo -e "Logs removal started_$(date +%F-%H:%M:%S)" 
echo -e "**********************************************************" 
[ -e /backup/logs/older_logs_removed.txt ] 
find /backup/logs/all_logs_BKP/ *tar.gz -type f -mtime +30 -exec rm -rv } \;#to find & remove files at specific path 
echo -e "**********************************************************" 
echo -e "Logs removal completed_$(date +%F-%H:%M:%S)" 
echo -e "**********************************************************" 
} 
syslog | tee -a /var/logs/older_logs_removed.txt 

回答

1

你应该使用{},而不仅仅是},以指示find --exec找到的文件。

不要直接从-exec调用rm,请调用以下脚本。它只会在文件最后一次更改不在月份的最后一天时删除该文件。

要检测此日期,它会尝试将1天添加到日期,并将其月份与原始日期的月份进行比较。如果它是一样的,那不是最后一天。

#!/bin/bash 
file=$1 
ymd=($(date -r "$file" '+%Y %m %d')) 
prev_month=$(date -d ${ymd[0]}${ymd[1]}${ymd[2]}+1day +%m) 
if [[ ${ymd[1]} == $prev_month ]] ; then 
    rm -rv "$file" 
else 
    echo Skipping "$file" >&2 
fi 
+0

好,我会做到这一点,但你可以请帮助我如何我如何我可以继续蛾结束 –

+0

@HitenderPalSingh创建压缩文件:检查更新。 – choroba

相关问题