【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() ...
随机推荐
- 百度EasyDL文本分类自定义API示例代码 python
因为需要将命名实体中的组织机构名进一步区分为政府.企业.社会组织等,在easydl上做了一个文本分类模型,但是要用这个接口时候发现, 官方文档中竟然还在用urllib2的库,且不完整.好多地方会报错, ...
- MHA实现MySQL的高可用
一:软件简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件. 在 ...
- WPF程序打包发布
1.新建安装项目: 新建项目——其他项目类型——安装与部署——InstallShield Limited Edition Project 2.配置安装信息: 选择Project Assistant进入 ...
- 2017年11月23日**科技面试java工程师面试总结
从整个面试看了,表现并不理想,有很多不足. 1.关于手机页面闪现问题的处理.从原理上观察,页面闪现是因为异步请求导致的.在进入页面中首先会加载默认的东西,此时也会访问数据库端,会用ajax判断是否满足 ...
- javascript高级
数组及操作方法 数组就是一组数据的集合,javascript中,数组里面的数据可以是不同类型的. 定义数组的方法 //对象的实例创建 var aList = new Array(1,2,3); //直 ...
- centos升级openssl方法及步骤
1.下载要升级到的openssl包https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz 2.升级opens ...
- STL 小白学习(8) set 二叉树
#include <iostream> using namespace std; #include <set> void printSet(set<int> s) ...
- 欢迎观临,这里藏着个秘密,神秘摩斯重着盛装依旧精彩,正如期待一个有趣的灵魂,轻启the key in my hands,也许是命中注定,我们的故事始于你生日的那天,每一句都动人心弦
U2FsdGVkX1/goI0+jYuePWrZo0ynTTAnPVoPEtJYC/1/9/DvtB2x7RkQYO8cEhp5Cb6YK0AqvXbwVmxFguDwZIevQhux++vYdrnB ...
- 配置合适的Visual Studio 2017 开发环境(其它版本的也适用)
1.VS 安装完成后,可以重新配置合适的开发环境 第一步: 第二步: 第三步: 第四步:选择合适自己的开发环境 这里我选择常规,具体的可以看窗口右边的说明
- Nginx实现404页面的几种方法
一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有以下集中配置方式,一起来看看. 第一种:Nginx自己的错误页面 Nginx访问一个静态的html 页面,当这个页面没 ...