云网牛站
所在位置:首页 > Linux编程 > 删除Linux中早于“X”天的文件/文件夹的Bash脚本

删除Linux中早于“X”天的文件/文件夹的Bash脚本

2020-02-05 15:26:14作者:赖以葵稿源:云网牛站

本文介绍在Linux中删除早于“X”天的文件夹的Bash脚本、及使用Bash脚本删除Linux中“X”日之前的文件。

 

1、Bash脚本:在Linux中删除早于“X”天的文件夹

我们有一个名为“/var/log/app/”的文件夹,其中包含15天的日志,我们将删除10天的旧文件夹,以下为示例:

$ ls -lh /var/log/app/

删除Linux中早于“X”天的文件/文件夹的Bash脚本

该脚本将删除10天的旧文件夹,并通过邮件发送文件夹列表。

Bash脚本如下,您可以根据需要更改值“-mtime X”,另外,请替换您的电子邮件ID,而不是我们。

# /opt/script/delete-old-folders.sh

#!/bin/bash

prev_count=0

fpath=/var/log/app/app_log.*

find $fpath -type d -mtime +10  -exec ls -ltrh {} \; > /tmp/folder.out

find $fpath -type d -mtime +10  -exec rm -rf {} \;

count=$(cat /tmp/folder.out | wc -l)

if [ "$prev_count" -lt "$count" ] ; then

MESSAGE="/tmp/file1.out"

TO="249562751@qq.com"

echo "Application log folders are deleted older than 15 days" >> $MESSAGE

echo "+--------------------------------+" >> $MESSAGE

echo "" >> $MESSAGE

cat /tmp/folder.out | awk '{print $6,$7,$9}' >> $MESSAGE

echo "" >> $MESSAGE

SUBJECT="WARNING: Apache log files are deleted older than 15 days $(date)"

mail -s "$SUBJECT" "$TO" < $MESSAGE

rm $MESSAGE /tmp/folder.out

fi

为“delete-old-folders.sh”文件设置可执行权限:

# chmod +x /opt/script/delete-old-folders.sh

最后添加一个cronjob以使其自动化,它每天早上7点运行:

# crontab -e

0 7 * * * /bin/bash /opt/script/delete-old-folders.sh

参考:在Linux系统下使用Crontab UI安全管理Cron定时任务

您将得到类似下面的输出信息:

删除Linux中早于“X”天的文件/文件夹的Bash脚本

 

2、Bash脚本:删除Linux中“X”日之前的文件

我们有一个名为“/var/log/apache/”的文件夹,其中包含15天的日志,我们将删除10天的旧文件:

# ls -lh /var/log/apache/

删除Linux中早于“X”天的文件/文件夹的Bash脚本

该脚本将删除10天的旧文件并通过邮件发送文件夹列表。

Bash脚本如下,您可以根据需要更改值“-mtime X”,另外,请替换您的电子邮件ID,而不是我们。

# /opt/script/delete-old-files.sh

#!/bin/bash

prev_count=0

fpath=/var/log/apache/2daygeek_access.*

find $fpath -type f -mtime +15  -exec ls -ltrd {} \; > /tmp/file.out

find $fpath -type f -mtime +15  -exec rm -rf {} \;

count=$(cat /tmp/file.out | wc -l)

if [ "$prev_count" -lt "$count" ] ; then

MESSAGE="/tmp/file1.out"

TO="249562751@qq.com"

echo "Apache Access log files are deleted older than 20 days"  >> $MESSAGE

echo "+--------------------------------+" >> $MESSAGE

echo "" >> $MESSAGE

cat /tmp/file.out | awk '{print $6,$7,$9}' >> $MESSAGE

echo "" >> $MESSAGE

SUBJECT="WARNING: Apache log folders are deleted older than 15 days $(date)"

mail -s "$SUBJECT" "$TO" < $MESSAGE

rm $MESSAGE /tmp/file.out

fi

将可执行权限设置为“delete-old-files.sh”文件:

# chmod +x /opt/script/delete-old-files.sh

最后添加一个cronjob以使其自动化,它每天早上7点运行:

# crontab -e

0 7 * * * /bin/bash /opt/script/delete-old-folders.sh

您将得到类似下面的输出信息:

删除Linux中早于“X”天的文件/文件夹的Bash脚本

 

相关主题

用find、rm命令清理Linux临时文件夹及检查Linux临时文件夹何时已满

精选文章
热门文章