1、删除命令介绍
在Shell中删除指定时间前的文件,可以使用find
命令结合-mtime
或-mmin
选项来查找并删除文件。
以下是一个示例:
# 删除30天之前的文件
find /path/to/directory -type f -mtime +30 -exec rm {} \;
# 删除60分钟之前的文件
find /path/to/directory -type f -mmin +60 -exec rm {} \;
在上面的命令中:
/path/to/directory
是要搜索的目录路径。-mtime +30
表示查找修改时间在30天之前的文件。类似地,-mmin +60
表示查找修改时间在60分钟之前的文件。-type f
表示只查找普通文件,而不包括目录或其他特殊文件。f为文件,d为文件夹。-exec rm {} \;
是find
命令中用来执行特定操作的部分。在这里,-exec
参数表示执行后面指定的命令,rm
是要执行的命令,{}
代表find
命令找到的文件名,在每次执行时会被替换为实际的文件名,\;
表示命令的结束。所以,-exec rm {} \;
就是告诉find
命令对于每一个找到的文件执行rm
命令来删除它们。
请确保在运行这些命令之前仔细检查路径和条件,以免意外删除重要文件。
2、使用示例
1、确认路径和文件
# 查找指定名称目录下,指定名称的文件,统计数量
find /usr/share/nginx/html/ark* -mtime +2 -type f -name "*.html" | wc -l
# 查找指定名称目录下,指定名称的文件,查看其路径名称,去重后展示,确认目录是否正确
find /usr/share/nginx/html/ark* -mtime +2 -type f -name "*.html" | xargs dirname | sort | uniq
2、执行删除
# 查找指定名称目录下,指定名称的文件,进行删除
find /usr/share/nginx/html/ark* -mtime +2 -type f -name "*.html" -exec rm {} \;
3、配置定时执行
#1、将删除命令写入rotate_clean_html.sh
#2、为脚本赋可执行权限
chmod +x /usr/share/nginx/html/rotate_clean_html.sh
#3、并在crontab -e 命令中增加如下行
30 9 * * * /usr/share/nginx/html/rotate_clean_html.sh > /dev/null 2>&1
2024.2.20 v1.0