如何使用shell脚本有效地清理文件夹

时间:2017-03-29 14:56:30

标签: linux shell scripting

我正在使用包含各种文件夹的目录结构。其中一些新文件每天都会创建。

我已经创建了一些程序来清理目录,但是我想使用shell脚本来提高效率。

因此我想存储" archiving.properties "每个需要清理的文件夹中的文件。属性文件应包含以下变量

file_pattern="*.xml"
days_to_keep=2

现在我的清理程序应该:

  1. 查找所有属性文件
  2. 删除与文件名模式(file_pattern)匹配的所有文件,这些文件比找到属性文件的目录中定义的天数(days_to_keep)早。
  3. 所以我的问题是如何以最有效的方式做到这一点?

    find . -type f -name "archiving.properties"  -print
    find . -type f -name "<file_pattern>"  -mtime +<days_to_keep> -delete
    

    目前我在一个文件夹中尝试以下操作。它正确打印出命令,但是没有执行。

    #!/bin/bash
    . archiving.properties
    find . -type f -name "*.xml"  -mtime +1 -exec rm -rf {} \;
    echo "    find . -type f -name \"${file_pattern}\"  -mtime +${days_to_keep} -exec rm -rf {} \;" 
    
    
    Result is:    find . -type f -name "*.xml"  -mtime +1 -exec rm -rf {} \;
    

    提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我得到了最终结果

echo "start deleting files in " $(pwd) " ... "

#filename of the properties
properties="clean_up.properties"

#find all properties files
for prop in $(find . -type f -name $properties);do
        #init variables
        file_pattern="*._html"
        days_to_keep=14

        #load the variables from the properties file
        . "$prop"

        #define the folder of the properties file
        folder=${prop%?$properties}

        #remove all files matching the parameters in the folder where the properties were found
        echo ">>>   find $folder -type f -name \"${file_pattern}\" -mtime +${days_to_keep} -exec rm -f {} \;"
                    find $folder -type f -name "${file_pattern}"   -mtime +${days_to_keep} -exec rm -f {} \;
done
echo "... done"