首页 > 系统相关 >Linux shell脚本案例:使用正则表达式匹配目录并定时删除日期早于当前系统日期的所有目录

Linux shell脚本案例:使用正则表达式匹配目录并定时删除日期早于当前系统日期的所有目录

时间:2024-08-08 08:57:26浏览次数:11  
标签:脚本 shell 日期 NFS XBK YYYYMMDDHHMMSS 目录 dir

实现每周三和每周日执行清理 /NFS 目录的任务,你可以使用 shell 脚本结合 cron 定时任务。下面是一个示例脚本,它会删除 /NFS 目录下所有名称形如 XBK_FULL_YYYYMMDDHHMMSS 和 XBK_INCR_YYYYMMDDHHMMSS 的目录,其中日期早于当前系统日期。

步骤 1: 创建 Shell 脚本

  1. 创建脚本文件

    • 创建一个名为 cleanup.sh 的脚本文件。
  2. 编写脚本内容

    • 使用文本编辑器编写以下脚本内容。
#!/bin/bash

# 定义 NFS 目录路径
NFS_DIR="/NFS"

# 获取当前日期,格式为 YYYYMMDD
CURRENT_DATE=$(date +%Y%m%d)

# 遍历 NFS 目录下的所有子目录
for dir in "$NFS_DIR"/*; do
    # 提取目录名称
    dir_name=$(basename "$dir")

    # 检查目录名称是否符合预期的格式
    if [[ $dir_name =~ ^(XBK_FULL|XBK_INCR)_([0-9]{8}) ]]; then
        # 提取目录中的日期
        dir_date="${BASH_REMATCH[2]}"

        # 比较目录日期与当前日期
        if [[ $dir_date -lt $CURRENT_DATE ]]; then
            # 删除过期的目录
            rm -rf "$dir"
            echo "Deleted directory: $dir"
        fi
    fi
done

步骤 2: 设置权限

  1. 赋予执行权限
    • 使用 chmod 命令给脚本添加执行权限。
    chmod +x cleanup.sh
    

步骤 3: 配置 Cron 定时任务

  1. 打开 crontab 编辑器

    • 使用 crontab -e 命令打开 crontab 文件编辑器。
  2. 添加定时任务

    • 添加以下行来配置每周三和每周日的定时任务。
    0 0 * * 3,0 /path/to/cleanup.sh
    
    • 这里的 0 0 * * 3,0 表示每周三(3)和周日(0)的午夜(0 0)执行脚本。

解释

  • 这个脚本现在会遍历 /NFS 目录下的所有子目录,并检查每个子目录的名称是否符合 XBK_FULL_YYYYMMDDHHMMSSXBK_INCR_YYYYMMDDHHMMSS 的格式。
  • 如果子目录的日期早于当前日期,脚本会删除该目录。
  • 定时任务配置了每周三和周日午夜执行清理脚本。

总结

  • 脚本使用正则表达式 (XBK_FULL|XBK_INCR)_([0-9]{8}) 来匹配两种类型的目录名称。
  • 该脚本可以处理 XBK_FULL_YYYYMMDDHHMMSSXBK_INCR_YYYYMMDDHHMMSS 形式的目录。

标签:脚本,shell,日期,NFS,XBK,YYYYMMDDHHMMSS,目录,dir
From: https://blog.csdn.net/a772304419/article/details/140977052

相关文章

  • Nginx反向代理,代理H5前端 ,java后端,使用服务器+finalshell+vpn
    使用前确认已经安装好nginx,这里我使用的是普通的nginx,注意不是Docker版本的nginx输入nginx-t查询一下,自己的nginxconfig.nginx在那个包下,方便查询 使用catnginx.conf命令,进入需要配置的conf中(这个是我使用的server[server{listen82;s......
  • uniapp 解决andorid10以上App文件存储到手机盘目录
    file.js方法:/**@Descripttion:*@version:V1.0.0*@Author:BaiYayong*@Date:2024-08-0610:25:48*@LastEditTime:2024-08-0715:50:33*//*使用该类应开启以下权限(读取和写入)<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STOR......
  • 改进删除文件和目录的 python 脚本运行时间
    我有一个Python脚本,可以删除X天之前的文件和目录。然而,该脚本运行在一个包含数百万个文件和目录的巨大目录上。按照目前的速度,完成删除过程大约需要六周时间(查看磁盘空间指标)。看来主要瓶颈在于列出文件和目录。任何人都可以建议代码更改或优化,以帮助减少运行时间?不......
  • DIP2.0目录概述
    DIP2.0版病种库包含国家核心病种目录9520组,其中保守治疗组3209组、手术操作组6311组,手术操作组中又分为仅包含“主要操作”的5211组和包含“主要操作+相关操作”的1100组。按照ICD-10疾病诊断医保2.0版编码层次结构分析比对,DIP2.0版病种库共覆盖疾病诊断20章、218节、1133类......
  • Linux 修改 默认 shell
    连接到目标计算机后,默认情况下会进入目标计算机的默认shell。要切换到bashshell,只需在终端窗口中输入以bash,以非登录交互方式启动bashshell。但是每次都输入bash很麻烦,就需要修改默认shell,使其登录就进入bash(或者其他shell)。查看系统已安装的shell如果要查看当前系统的she......
  • 排序算法 希尔排序 ShellSort -- C语言实现
    希尔排序希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排......
  • linux下的临时目录
    是的,Linux系统中有临时目录,主要用于存储临时文件。常见的临时目录包括:/tmp:这是最常用的临时目录,通常所有用户都可以在这里创建临时文件。系统在启动时可能会清空这个目录中的文件,或者在定期清理时移除未使用的文件。/var/tmp:与 /tmp 相似,但 /var/tmp 通常用于存放需要......
  • |手游|泛二级泛目录泛程序——码山侠
    泛解析站群:优化网站排名与吸引BA度蜘蛛的必备程序看过来i5i.net,给你不一样的体验主要功能:无限页面生成:网站支持无限生成页面,避免死链风险。每个页面都是独立的栏目或文章内容。域名泛解析绑定:支持域名泛解析绑定,每个二级域名都是一个独立站点。BAO度自动提交收录:支持BA......
  • 字符串系列目录&&说明
    字符串准备写成一个系列。目录\(\text{KMP笔记}\)\(\text{Manacher笔记}\)[][][]格式与说明下面的说明和格式将被应用于整个系列。说明所有字符串的下标从\(1\)开始。所有的实际字符串使用\texttt字体。如\(s=\texttt{abac}\)。所有算法名和公......
  • linux进程篇总结——实战——自定义shell
        前言:经过过去两章十二篇文章的学习,我们已经知道了进程的基本概念以及进程的控制方法。本篇内容就是使用过去学习的内容自己写一个功能简单的shell外壳程序,也就是我们使用的bash命令行。本篇内容是过去进程知识的集大成者。我们在这个实战程序中,将过去学过的......