【SHELL】:定時任務刪除指定目錄

現有一個需求,須要定時刪除積累太久的目錄,而且部分目錄不可刪除。在此,咱們分析了一下該父目錄的命名結構:非連續性數字命名,部分目錄中包含a.txt文件。以下圖所示:html

在此,咱們對此可做以下操做,獲取該父目錄下最大(max)以及最小(min)目錄的名字,增長一個可變deduce值,須要刪除的目錄區間範圍則爲:[min,max-deduce),剩餘留下的目錄區間範圍則爲:[max-deduce,max]。ios

實現的內容有:一、磁盤空間低於某值批量刪除文件目錄shell

       二、保留最新的部分目錄bash

       三、刪除的目錄中包含某個文件時跳過spa

       四、Mac OS加入定時任務code

輔助建立文件夾操做:htm

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()

完整腳本:blog

###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

關於定時任務的介紹,可見 http://www.javashuo.com/article/p-nffscgek-bx.html 此文章詳解。crontab

相關文章
相關標籤/搜索