返回顶部
首页 > 资讯 > 操作系统 >shell清理指定目录中指定天数之前的旧文件
  • 620
分享到

shell清理指定目录中指定天数之前的旧文件

shell清理指定文件shell清理文件 2023-05-06 10:05:20 620人浏览 八月长安
摘要

目录前言脚本实现总结注意事项1:mtime 为0的情况注意事项2:/tmp为软链的时候前言 我们在服务器运行一些服务经常会产生很多临时文件,而有些临时文件不定期处理很容易就打满了整个磁盘;所以有必要去定期清理,基于这个需

目录
  • 前言
  • 脚本实现
  • 总结
    • 注意事项1:mtime 为0的情况
    • 注意事项2:/tmp为软链的时候

前言

我们在服务器运行一些服务经常会产生很多临时文件,
而有些临时文件不定期处理很容易就打满了整个磁盘;
所以有必要去定期清理,基于这个需求我们就可以搞一个脚本结合crontab或者服务调度这些来使用;

脚本实现

#!/bin/bash
# cleanup_old_files - 清理指定目录中指定天数之前的旧文件
# $1: 目录名称
# $2: 天数
# $3: (可选)关键字,用于匹配文件名
function cleanup_old_files() {
    local dir="$1"     # 目录名称
    local days="$2"    # 天数
    local keyWord="$3" # 匹配文件名的关键字
    # 参数有效性检查
    if [ -z "$dir" ]; then
        echo "错误:目录参数为空."
        return 1
    fi
    if [ ! -d "$dir" ]; then
        echo "错误:目录 $dir 不存在."
        return 1
    fi
    if ! [[ "$days" =~ ^[0-9]+$ ]]; then
        echo "错误:天数参数无效."
        return 1
    fi
    # 如果未指定天数,则默认为当天
    if [ -z "$days" ]; then
        days=0
    fi
    # 构建查找命令,根据 $days 的值进行区分
    if [ "$days" -eq 0 ]; then
        find_cmd="find -L \"$dir\" -type d -o -type f -mtime 0"
    else
        find_cmd="find -L \"$dir\" -type d -o -type f -mtime +$days"
    fi
    # 如果指定了关键字,则加入查找命令中
    if [ -n "$keyword" ]; then
        find_cmd+=" -name \"*$keyword*\""
    fi
    # 打印完整命令
    echo "执行命令: $find_cmd"
    # 执行查找并删除文件
    if [ "$days" -eq 0 ]; then
        echo "正在清理目录 $dir 中当天创建的$(if [ -n "$keyword" ]; then echo "包含关键字 $keyword 的 "; else echo "所有 "; fi)文件..."
    else
        echo "正在清理目录 $dir 中 $days 天之前创建的$(if [ -n "$keyword" ]; then echo "包含关键字 $keyword 的 "; else echo "所有 "; fi)文件..."
    fi
    # 通过-exec rm -rf {} + 删除查找到的文件
    if eval "$find_cmd -exec rm -v -rf {} +" >/dev/null; then
        if [ "$days" -eq 0 ]; then
            echo "已删除当天的旧文件."
        else
            echo "已删除 $days 天之前的旧文件."
        fi
    else
        echo "删除失败."
        return 1
    fi
}
# 示例用法
# cleanup_old_files "/path/to/directory" 30 "log"
# cleanup_old_files "/path/to/directory" 0 "log"

总结

注意事项1:mtime 为0的情况

值得注意的是,mtime为0的时候,也就是我们想模拟当天,不能带修饰符(+/-);
Debian和MacOS执行的表现是没有报错,但是没有任何操作,所以代码里面做了一个区分;

注意事项2:/tmp为软链的时候

若是find命令想要检索到里面的内容,记得带-L,否则没法检索出任何东西;

# 在mac下tmp是一个软链链接到/private/tmp
ls -l /tmp
lrwxr-xr-x@ 1 root  wheel  11 Dec  2 19:37 /tmp -> private/tmp

带上-L之后就能兼容linux和MacOS两个平台,方便本地调试也能测试

这个参数大体的作用就是递归去找,所以符号链接也能被检索;
不带的情况下默认都是只找硬链接,符号链接就会直接忽略。

到此这篇关于shell清理指定目录中指定天数之前的旧文件的文章就介绍到这了,更多相关shell清理指定文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: shell清理指定目录中指定天数之前的旧文件

本文链接: https://lsjlt.com/news/202006.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • shell清理指定目录中指定天数之前的旧文件
    目录前言脚本实现总结注意事项1:mtime 为0的情况注意事项2:/tmp为软链的时候前言 我们在服务器运行一些服务经常会产生很多临时文件,而有些临时文件不定期处理很容易就打满了整个磁盘;所以有必要去定期清理,基于这个需...
    99+
    2023-05-06
    shell清理指定文件 shell清理文件
  • Shell定时删除指定时间之前的文件
    最近世界杯来了,一直忙于工作和世界杯之间,都没有空来管管我的blog了,今天只能整个简单的小shell给大家了.公司要求删除一个月之前的备份文件,免得把硬盘给整爆了,上服务器看了下,居然都有3个月的备份没有...
    99+
    2022-06-04
    文件 时间 Shell
  • 在指定目录查找指定后缀文件的shell脚本代码
    #!bin/sh # 在指定位置查找指定后缀的文件,包括子目录 # 用法: # findf $1 $2 # 第一个参数为后缀 # 查找指定后缀的文件并打印出来 # link:www.lsjlt....
    99+
    2022-06-04
    后缀 脚本 代码
  • 怎么用Shell定时删除指定时间之前的文件
    这篇文章主要介绍“怎么用Shell定时删除指定时间之前的文件”,在日常操作中,相信很多人在怎么用Shell定时删除指定时间之前的文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Shell定时删除指定时...
    99+
    2023-06-09
  • C#获取指定目录下指定文件的方法
    1.首先,需要指定获取的文件夹,以及获取文件的文件名; 文件夹:strLocalPath = System.Windows.Forms.Application.StartupPath...
    99+
    2024-04-02
  • 怎么用批处理bat删除指定天数日期之前的文件
    这篇文章主要讲解了“怎么用批处理bat删除指定天数日期之前的文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用批处理bat删除指定天数日期之前的文件”吧!【方案一】删除指定路径下指定天...
    99+
    2023-06-08
  • 怎么用批处理bat删除指定天数日期之前的文件夹
    这篇文章主要讲解了“怎么用批处理bat删除指定天数日期之前的文件夹”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用批处理bat删除指定天数日期之前的文件夹”吧!【方案一】BAT + RE...
    99+
    2023-06-08
  • 如何实现在指定目录查找指定后缀文件的shell脚本代码
    这篇文章将为大家详细讲解有关如何实现在指定目录查找指定后缀文件的shell脚本代码,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:#!bin/sh  # 在指定位置查找指定后缀的文件,包...
    99+
    2023-06-09
  • C#实现打开指定目录和指定文件的示例代码
    目录一、实现内容1.1实现的功能1.2实现的效果二、实现操作三、Windows 资源管理器参数说明一、实现内容 1.1实现的功能 想要实现: ①打开指定的目录; ②打开指定的目录且选...
    99+
    2024-04-02
  • python怎么在指定目录中创建文件
    在Python中,可以使用`open()`函数来创建文件。指定目录中创建文件的方法是,在`open()`函数中传入文件的路径和名称。...
    99+
    2023-09-14
    python
  • shell中怎么获取指定日期前N天的日期
    本篇文章给大家分享的是有关shell中怎么获取指定日期前N天的日期,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、创建测试文件test.sh#!/bin/sh. /...
    99+
    2023-06-09
  • 批处理bat如何实现下载FTP服务器上指定天数之前的文件
    这篇文章主要介绍了批处理bat如何实现下载FTP服务器上指定天数之前的文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。示例代码:@echo offrem ...
    99+
    2023-06-08
  • Linux解压文件到指定目录的方法
    本文介绍了linux解压文件到指定目录的方法,分享给大家,具体如下: tar在Linux上是常用的打包、压缩、加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案...
    99+
    2022-06-04
    解压文件到指定目录 linux解压到指定目录
  • Linux中怎么将解压文件指定到目录中
    本篇内容介绍了“Linux中怎么将解压文件指定到目录中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!tar在Linux上是常用的打包、压缩、...
    99+
    2023-06-28
  • python中如何查看指定目录下的所有文件
    python中查看指定目录下所有文件的方法:1、在win操作系统中找到python程序目录;2、打开idle工具;3、在idle中新建一个shell脚本;4、输入“import os”指令导入os模块;5、通过“os.listdir(目录路...
    99+
    2024-04-02
  • php如何知道指定目录中有哪些文件
    这篇文章主要讲解了“php如何知道指定目录中有哪些文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何知道指定目录中有哪些文件”吧!有时候我们操作目录,需要了解目录中是否有文件存在,...
    99+
    2023-06-20
  • linux中如何保留文件系统下剩余指定数目文件的shell脚本
    这篇文章主要介绍了linux中如何保留文件系统下剩余指定数目文件的shell脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。例子:代码如下:#!/bin/bash #---...
    99+
    2023-06-09
  • 可以删除指定天数文件的vbs脚本
    本篇内容介绍了“可以删除指定天数文件的vbs脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!复制代码 代码如下:Const Fi...
    99+
    2023-06-08
  • linux下保留文件系统下剩余指定数目文件的shell脚本
    本节内容:保留文件系统下剩余指定数目的文件 例子: #!/bin/bash #------------------------------- #Description: Back up your file...
    99+
    2022-06-04
    文件系统 数目 脚本
  • shell脚本实现删除服务器指定目录下文件方法
    删除4天前的文件 #!/bin/bash# 指定要删除文件的目录路径folder_path="/path/to/folder"# 查找并删除4天以前的文件find $folder_path -type...
    99+
    2023-09-03
    服务器 linux bash
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作