现有一个需求,需要定时删除积累过久的目录,并且部分目录不可删除。在此,我们分析了一下该父目录的命名结构:非连续性数字命名,部分目录中包含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. Java单例实现及分析

    双重检验锁实现方式 public class Singleton { //定义一个私有的空构造方法,防止直接用new实例化 private Singleton() {} private static ...

  2. HIT2019春软件构造->正则表达式语法

    普通字符:匹配与之相同的字符        字母.数字.汉字.下划线.没有特殊定义的标点符号. 简单的转义字符: \n 换行符 \t 制表符 \\ 代表\本身 \^,\$,\.,\(,\),\{,\} ...

  3. promise知识点小结

    断断续续学习es6也有一段时间了,趁着开学空闲对知识点做一些小结. 为什么使用promise 谈到Promise,我们知道,这是社区较理想的异步编程解决方案.想要掌握promise,我们首先要知道其提 ...

  4. EF Core 生成数据库

       1.运行cmd,切换到打开项目所在文件夹,输入下面的命令 dotnet ef migrations add Initial 建立并初始化数据库 dotnet ef database update ...

  5. CSS3特性

    2018-08-20 CSS3:用于控制网页的样式和布局 1.transform:rotate(30deg);      CSS3 模块 选择器 盒模型 背景和边框 文字特效 2D/3D转换 动画 多 ...

  6. Python_Mix*re模块基础方法,进阶,正则表达式的使用

    re模块import re 基础方法 findall:匹配所有 ,每一项都是列表中的一个元素,返回的是列表 search只匹配从左到右的第一个,得到的不是直接的结果,而是一个变量,通过这个变量的gro ...

  7. PHP 2个比较经典的加密解密函数

    这篇文章主要介绍了2个比较经典的PHP加密解密函数分享,一个是Discuz!的authcode加密函数(带详细分解),一个是encrypt()函数,都比较经典,需要的朋友可以参考下 项目中有时我们需要 ...

  8. python之路-数据类型(方法)

    Int i = 1 print(i.bit_length()) # 转化成二进制的最小位数. ''' 0000 0001 ''' Str class str(basestring): "&q ...

  9. Shadow Properties之美(一)【Microsoft Entity Framework Core随笔】

    最近在做公司的项目的时候,开始把部分程序迁移到EF Core,然后有了一些感触,趁着还没忘却,还是先记录下来. EF Core还在成长中,我写这个的时候,版本是2.2.如果对着已有的EF 5/6来说, ...

  10. Python 字典删除元素clear、pop、popitem

    同其它python内建数据类型一样,字典dict也是有一些实用的操作方法.这里我们要说的是字典删除方法:clear().pop()和popitem(),这三种方法的作用不同,操作方法及返回值都不相同. ...