`

linux shell 递归目录文件 删除指定日期之外的文件和空目录

阅读更多

#!/bin/sh

#Name delFileAsDate.sh

#Creation date: 2010-10-30

#Author: Frank Wu

 

 

Usage(){

#{{{

        echo 'Usage: sh '$0' <dirList name>' 1>&2

        echo 'e.g.' 1>&2

        echo '  sh '$0' /home/username/workspace/delFileAsDate  /home/username/workspace/dirList' 1>&2

}

#}}}

if [ $#  -lt 1 ]; then

        Usage && exit 1

fi

 

 

handleDir(){

      if ls $1/* 2> tmp > tmp

                then

                     rm -rf $1/tmp #Delet tmp file

                     file=`ls $1`

                     for name in $file

                     do

                                if [ -d $1/$name ];

                                then

handleDir $1/$name

                                else

#echo $1/$name

handleFile $1/$name

                                fi

   done            

               else

rm -rf $1/tmp

                                echo "remove ....... Empty dirtionary"$1

#rm -rf $1

fi

}

 

handleFile(){

        fName=$1

        if [ -f $fName ];

        then

                eval `ls -l $fName | awk {' print "day="$7'}`

               # echo $day

flag=false

       for days in ${ArrDay[*]}

do

#echo "array[i] = "$days 

if [[ "$day" == "$days" ]];

then

  flag=true

fi

done

if [[ "$flag" == "false" ]];

then

handleLastModify $fName

#echo "can removing file"

#rm $fName

fi  

        fi

}

 

handleLastModify(){

flName=$1

nowTime=$(date +%s)

((limit=$lastModify*86400))

eval `stat $flName | grep Change|awk '{print "changeDate="$2}'`

#echo $flName

changeTime=`date -d "$changeDate" +%s`

((marginTime=$nowTime-$changeTime))

if (($marginTime > $limit)); then

#rm $flName

echo "delete file .....changeDate= "$changeDate"...fileName ="$flName

fi

}

 

#handleLastModify /home/wusx/test/fds/fdfd

 

dirFile=$1

 

 

cat $dirFile | while read line

do

eval ` echo $line | awk -F ' ' '{print $1}' | awk -F '=' '{print "dir="$2}' `

 

eval ` echo $line | awk -F 'lastModify ' '{print $2}' | awk -F '}' '{print "lastModify="$1}' `

 

eval ` echo $line | awk -F '(' '{print $2}' | awk -F ')' '{print "days="$1}' `

 

ArrDay=(`echo $days | awk -F ' ' '{print $0}'`)

if [ -z $lastModify ];then

lastModify=7

fi

 

if [ -z $ArrDay ];then

ArrDay=(1 15)

fi

 

#echo ${#ArrDay[*]}

#echo $lastModify

if [ ! -d $dir ]; then

echo $dir "doesn't exists!" 

#exit

#continue

else

      handleDir $dir

#continue

fi

 

 

 

done

#A=(12 29 1 2 3 )

#echo ${#A[*]}

 


================================================ 附:目录列表文件 dirList dir=/home/wusx/workspace/aoes/free/lib keep={dayOfMonth ("1 4 15") lastModify 7} dir=/u02/site2 dir=/home/wusx/workspace/TranslateSiteManager dir=/u01 dir=/home/wusx/workspace/TranslateSiteManager/src keep={lastModify 7} dir=/home/wusx/workspace/TranslateSiteManager/src keep={dayOfMonth ("26")}
分享到:
评论

相关推荐

    C实现Linux中Shell部分命令.zip

    核心函数是`unlink()`用于删除普通文件,而`rmdir()`则用于删除空目录。非空目录的删除需要先删除其下的所有子目录和文件。 3. **echo命令**:用于在终端打印出接收到的参数。在C中,可以使用`printf()`函数实现这...

    实验二 嵌入式linux文件和目录管理实验

    Linux 文件和目录管理是嵌入式 Linux 操作系统中非常重要的一部分,本实验的目的是让学生掌握 Linux 文件和目录管理基本命令、命令重定向和管道操作、熟悉 Linux proc 文件系统的目录结构、掌握 Linux shell 程序的...

    Linux shell 及常用命令介绍.txt Linux shell 及常用命令介绍.txt

    - **删除目录**: `rmdir`(仅当目录为空时可用)、`rm -r`(强制删除非空目录) - **删除文件**: `rm` - **查看当前工作目录**: `pwd` - **查看文件内容**: `cat`、`more` - **查看目录大小**: `du` - `-s`: ...

    LINUX SHELL脚本攻略(中文版带书签).rar

    2. **目录操作**:`mkdir`创建目录,`rmdir`删除空目录,`rm -r`递归删除目录及其内容,`cd`切换目录。 3. **文件测试**:`-f`检查是否为文件,`-d`检查是否为目录,`-e`检查是否存在。 **五、I/O重定向与管道** 1....

    Shell脚本实现递归删除空文件夹

    递归删除空文件夹意味着不仅删除指定的空文件夹,而且还要遍历其所有子目录,如果它们也是空的,则一并删除。 首先,让我们看看提供的Shell脚本代码: ```bash #!/bin/bash # author: 十年后的卢哥哥 # des: ...

    linux常用命令及shell介绍

    - `rmdir dir1`:删除空目录 `dir1`。 - `rm -r dir1`:递归删除非空目录 `dir1` 及其所有子目录和文件。 #### 八、rm 命令详解 - **命令功能**:`rm` 用于删除文件或目录。 - **基本用法**: - `rm file1`:...

    linux shell 命令列表

    14. **rmdir**:删除空目录,`rmdir myemptydir`删除名为myemptydir的空目录。 15. **ifconfig**:显示网络接口的配置信息,如IP地址、子网掩码等。 16. **reboot**:重启系统。 17. **poweroff**:关闭系统。 ...

    Linux基础课件-- Linux系统目录删除-rmdir命令.pptx

    `rmdir`命令是Linux环境中用来删除空目录的工具,它允许用户清理不再需要的目录结构,但必须注意,该命令只能用于删除没有任何文件或子目录的空目录。 ### rmdir命令的作用 `rmdir`命令的主要任务是移除指定的空...

    Linux_shell命令

    **ls命令**:用于显示当前目录中的文件和目录信息,或指定目录的信息。 - `ls`:显示当前目录下的文件和目录。 - `ls -a`:显示所有文件,包括以`.`开头的隐藏文件。 - `ls -l`:以长格式显示文件详细信息,如权限、...

    Linux Shell Programming In 24 Hours

    创建新目录使用`mkdir`命令,删除空目录使用`rmdir`命令,而删除非空目录及其内容则需要使用`rm -rf`命令,但需谨慎使用,因为它没有确认机制。 ### 五、文件属性操作 #### 文件类型 Linux中的文件类型包括普通...

    linux-shell命令集

    Linux Shell命令是Linux操作系统中进行交互式操作和自动化任务的核心工具。它允许用户与系统进行交互,执行各种任务,如管理文件和目录、运行程序、处理文本等。下面将详细介绍这些命令及其用法: 1. **`ls`**:列...

    Linux文件操作和用户管理

    `chown -R`选项可以递归地更改目录及其子目录中的所有文件和目录的所有权。 Shell配置涉及到`.bashrc`、`.profile`等文件,这些文件包含了用户的个人环境变量设置,例如`PATH`环境变量,它定义了系统查找可执行文件...

    linux程序实现压缩文件

    `zip`命令是Linux中用于创建和管理ZIP格式归档文件的工具,它能够压缩单个文件或整个目录结构,同时支持密码保护。`zip`命令的基本语法如下: ```sh zip [选项] [压缩文件名] [文件或目录列表] ``` 其中,选项包括...

    shell常用命令

    使用rmdir命令可以删除空目录。 语法:rmdir [选项] dir-name 5. 改变工作目录 使用cd命令可以改变当前工作目录。 # cd [directory] 6. 显示当前工作目录 使用pwd命令可以显示当前工作目录的绝对路径。 二、文件...

    shell命令大全(linux下很有用的命令规范)

    5. **rmdir** - 删除空目录。 - `rmdir directory_name`:删除名为`directory_name`的空目录。 6. **rm** - 删除文件或目录。 - `rm filename`:删除名为`filename`的文件。 - `rm -rf directory_name`:强制...

    5-Shell常用Linux命令.rar

    要创建新目录,我们使用`mkdir`,删除空目录则是`rmdir`,若目录非空,需用`rm -r`进行递归删除。文件的创建、查看和编辑通常涉及`touch`、`cat`、`more`、`less`以及`vi/vim`或`nano`编辑器。 接下来是文件和内容...

    linux基础与shell编程

    - `rmdir`:删除空目录。 - `rm -r`:删除包含文件的目录。 - `pwd`:显示当前工作目录。 - `cd`:改变当前工作目录。 3. **文件查看和内容处理**: - `ls`:列出目录内容,`-l`显示详细信息。 - `cat`:查看...

    linux编程含有shell内部各种指令

    - `rmdir`/`rm -r`: 删除空目录,非空目录需用`rm -r`。 - `cat`: 连接并打印文件内容,常用于查看文本文件。 - `more`/`less`: 分页查看文件内容。 - `head`/`tail`: 查看文件头或尾部分。 3. **流程控制指令*...

    Shell基本命令.doc

    `rm filename`会删除指定的文件,`rmdir foldername`则会删除空的目录。请注意,删除操作通常是不可逆的。 5. **chmod**:修改文件或目录权限。`chmod 755 foldername`将文件夹权限设置为rwxr-xr-x,其中755是八...

Global site tag (gtag.js) - Google Analytics