现有一个需求,需要定时删除积累过久的目录,并且部分目录不可删除。在此,我们分析了一下该父目录的命名结构:非连续性数字命名,部分目录中包含a.txt文件。如下图所示:

在此,我们对此可作如下操作,获取该父目录下最大(max)以及最小(min)目录的名字,增加一个可变deduce值,需要删除的目录区间范围则为:[min,max-deduce),剩余留下的目录区间范围则为:[max-deduce,max]。

实现的内容有:1、磁盘空间低于某值批量删除文件目录

       2、保留最新的部分目录

       3、删除的目录中包含某个文件时跳过

       4、Mac OS加入定时任务

辅助创建文件夹操作:

import os, sys
def MkDir():
path1 = './a/'
path2 = './b/'
i = 0
for i in range(1,101):
file_name1 = path1 + str(i)
file_name2 = path2 + str(i)
os.mkdir(file_name1)
os.mkdir(file_name2)
i=i+1 MkDir()

完整脚本:

###shell脚本
#!/bin/bash #输出var目录下所有目录名
# var=/Users/funny/PycharmProjects/pratice/
# dir=$(ls -l /Users/funny/PycharmProjects/pratice/ |awk '/^d/ {print $NF}')
# for i in $dir
# do
# echo $i
# done
#tr -cd 排除除了【】外的
deduce=30
disk_capacity=$( df -h | grep '/dev/disk1s1' | awk '{print $4}' |tr -cd "[0-9]")
#获取目录名、从小到大排序、取最大值,sort -g常规排序 -r倒序排序
max_dir_ios=$(ls -l /Users/funny/PycharmProjects/pratice/a/ |awk '/^d/ {print $NF}' | sort -g |tail -n 1)
min_dir_ios=$(ls -l /Users/funny/PycharmProjects/pratice/a/ |awk '/^d/ {print $NF}' | sort -r |tail -n 1)
last_dir_ios=$(($max_dir_ios-$deduce)) echo $max_dir
echo $last_dir
echo $disk_capacity
#-le 小于等于
#ios清理
if [ $disk_capacity -le 80 ];then
echo "定时清理任务中。。"
#seq(最小值 最大值)
for i in $(seq $min_dir_ios $last_dir_ios) do
cd /Users/funny/PycharmProjects/pratice/a/$i/ if [ -f a.txt ];then
echo "存在文件A.TXT,跳过"
cd .. else
echo "删除文件夹" $i
cd ..
rm -rf $i fi
done
else
echo "ios不需要清理空间~"
fi

加入Mac OS定时任务:

#shell终端
crontab -e
#每周六8点钟执行1.sh文件并输出到a.log中
0 8**6 sh /Users/funny/Downloads/1.sh >>a.log

关于定时任务的介绍,可见 https://www.cnblogs.com/longjshz/p/5779215.html 此文章详解。


【SHELL】:定时任务删除指定目录的更多相关文章

  1. [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. Java版本的删除指定目录及子目录下名叫“xxx.txt”的所有文件

    以前写过一个python版本的,但是在查找文件路径的时候出现错误,无法正确的获取到文件的路径,就造成无法删除该路径下的“xxx.txt”文件. 当时以为是windows版本系统的错误造成这个问题的,也 ...

  3. Python批量删除指定目录下的指定类型的文件

    Python作为一种脚本语言.其很适合文件级的各种操作.以下的代码能够批量删除指定目录下的所有特定类型(CSV类型)的文件. import sys, csv , operator import os ...

  4. linux --> 删除指定目录下所有文件

    删除指定目录下所有文件 代码样例: ///////////////////////////////////////////////////// //Name: DeleteFile //Purpose ...

  5. C# 删除指定目录下的所有文件及文件夹

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  6. C#直接删除指定目录下的所有文件及文件夹(保留目录)

    #region 直接删除指定目录下的所有文件及文件夹(保留目录) /// <summary> /// 直接删除指定目录下的所有文件及文件夹(保留目录) /// </summary&g ...

  7. php删除指定目录所有文件

    <?php /** * 删除指定文件目录下的所有文件 * @param str $dir 指定文件路径: 如:K:/wamp/www/test * return boole *--------- ...

  8. python之删除指定目录指定日期下的日志文件

    #=======================================================================================20190521以下脚本 ...

  9. java删除指定目录及其文件

    import java.io.File; public class Test { public static void main(String args[]){ Test t = new Test() ...

随机推荐

  1. 百度EasyDL文本分类自定义API示例代码 python

    因为需要将命名实体中的组织机构名进一步区分为政府.企业.社会组织等,在easydl上做了一个文本分类模型,但是要用这个接口时候发现, 官方文档中竟然还在用urllib2的库,且不完整.好多地方会报错, ...

  2. MHA实现MySQL的高可用

    一:软件简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件. 在 ...

  3. WPF程序打包发布

    1.新建安装项目: 新建项目——其他项目类型——安装与部署——InstallShield Limited Edition Project 2.配置安装信息: 选择Project Assistant进入 ...

  4. 2017年11月23日**科技面试java工程师面试总结

    从整个面试看了,表现并不理想,有很多不足. 1.关于手机页面闪现问题的处理.从原理上观察,页面闪现是因为异步请求导致的.在进入页面中首先会加载默认的东西,此时也会访问数据库端,会用ajax判断是否满足 ...

  5. javascript高级

    数组及操作方法 数组就是一组数据的集合,javascript中,数组里面的数据可以是不同类型的. 定义数组的方法 //对象的实例创建 var aList = new Array(1,2,3); //直 ...

  6. centos升级openssl方法及步骤

    1.下载要升级到的openssl包https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz 2.升级opens ...

  7. STL 小白学习(8) set 二叉树

    #include <iostream> using namespace std; #include <set> void printSet(set<int> s) ...

  8. 欢迎观临,这里藏着个秘密,神秘摩斯重着盛装依旧精彩,正如期待一个有趣的灵魂,轻启the key in my hands,也许是命中注定,我们的故事始于你生日的那天,每一句都动人心弦

    U2FsdGVkX1/goI0+jYuePWrZo0ynTTAnPVoPEtJYC/1/9/DvtB2x7RkQYO8cEhp5Cb6YK0AqvXbwVmxFguDwZIevQhux++vYdrnB ...

  9. 配置合适的Visual Studio 2017 开发环境(其它版本的也适用)

    1.VS 安装完成后,可以重新配置合适的开发环境 第一步: 第二步: 第三步: 第四步:选择合适自己的开发环境 这里我选择常规,具体的可以看窗口右边的说明

  10. Nginx实现404页面的几种方法

    一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有以下集中配置方式,一起来看看. 第一种:Nginx自己的错误页面 Nginx访问一个静态的html 页面,当这个页面没 ...