【SHELL】:定时任务删除指定目录
现有一个需求,需要定时删除积累过久的目录,并且部分目录不可删除。在此,我们分析了一下该父目录的命名结构:非连续性数字命名,部分目录中包含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】:定时任务删除指定目录的更多相关文章
- [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java版本的删除指定目录及子目录下名叫“xxx.txt”的所有文件
以前写过一个python版本的,但是在查找文件路径的时候出现错误,无法正确的获取到文件的路径,就造成无法删除该路径下的“xxx.txt”文件. 当时以为是windows版本系统的错误造成这个问题的,也 ...
- Python批量删除指定目录下的指定类型的文件
Python作为一种脚本语言.其很适合文件级的各种操作.以下的代码能够批量删除指定目录下的所有特定类型(CSV类型)的文件. import sys, csv , operator import os ...
- linux --> 删除指定目录下所有文件
删除指定目录下所有文件 代码样例: ///////////////////////////////////////////////////// //Name: DeleteFile //Purpose ...
- C# 删除指定目录下的所有文件及文件夹
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- C#直接删除指定目录下的所有文件及文件夹(保留目录)
#region 直接删除指定目录下的所有文件及文件夹(保留目录) /// <summary> /// 直接删除指定目录下的所有文件及文件夹(保留目录) /// </summary&g ...
- php删除指定目录所有文件
<?php /** * 删除指定文件目录下的所有文件 * @param str $dir 指定文件路径: 如:K:/wamp/www/test * return boole *--------- ...
- python之删除指定目录指定日期下的日志文件
#=======================================================================================20190521以下脚本 ...
- java删除指定目录及其文件
import java.io.File; public class Test { public static void main(String args[]){ Test t = new Test() ...
随机推荐
- c# 参数名ascii码从小到大排序(字典序)拼接
代码如下: /// <summary> /// c# 参数名ascii码从小到大排序(字典序)拼接 /// </summary> /// <param name=&quo ...
- php中把美国时间转为北京时间的自定义
我的服务器北京时间,php调用的时间: date.timezone ="America/Chicago" 这是美国这边的一个时间,有的时候跟北京相差13个小时,有的时候跟北京时间相 ...
- sql语句进行写数据库时,字符串含有'的处理方式
如果字符串含有',sql语句在执行insert 或update时会发生错误,应将'替换成'',语句如下: land.Address = land.Address.Trim().Replace(&quo ...
- HTTP Basic和Digest认证介绍与计算
一.说明 web用户认证,最开始是get提交+把用户名密码存放在客户端的cookie中的形式:在意识到这样不安全之后逐渐演变成了post提交+把用户凭证放到了服务端的session中的形式(当然ses ...
- Linux Shell基线配置高级操作
一.输入解析类 1.1 echo解析tab和换行 问题描述:echo默认是原样输出字符串,并不解析\t和\n等反斜杠字符,如下图所示.我们希望echo能解析\t和\n等字符. 处理办法:可以使用-e指 ...
- IDEA主类文件需要放置在SRC文件下,非包内
构建flash项目后,主类文件需要放置在src下,而不是在某个包内. 这样才会找到入口主类,然后有输出. 主类里面有引用其他类,需要使用 import * 全部引入.
- elixir东游记:实现一个简单的中文语句解析
备份:https://zhuanlan.zhihu.com/p/46030123 代码地址:github:pyzh/gdpl-ex.poc-1 原语句是:List1为'12332234':记a为Lis ...
- JAVA的入门代码
public class HelloWord{ public static void main(String[] args){ System.out.println("你好,java&quo ...
- number类型精度分析
numbe类型的可设置的取值范围: number无限定 number(6)是6位整数 number(6,2)是4位整数,精确到两位小数,最多6位.四舍五入 number(6,-2)是6位整数,精确到百 ...
- 数据类型、运算符及Scanner类练习
数字加密.要求输入一个四位的正整数,每位数字加5再除以10取余,并替换该数字,再千位数与个位数互换,十位数与百位数互换. import java.util.Scanner;/** * 加密数字问题 * ...