递归大量目录结构,在 X 天内删除文件

递归大量目录结构,在 X 天内删除文件

第一份 Linux 编码工作。

被要求为一个计时作业编写一个脚本,该作业会遍历服务器上的所有文件夹并删除 X 天(可能是 20 天)内的所有文件。

我已经在我的家用 Redhat 机器上测试了下面的代码。

当然,在将这段代码推广到实际使用之前,我有很多忐忑不安。下面的代码工作正常,但我还需要它在“X”天内仅删除文件(而不是目录)。

无法下载、对系统数百个目录和数千个文件进行任何修改。第一次运行此程序时,我预计会删除超过 10,000 个文件,因为我们的客户将其文件留在我们的服务器上并忘记了它们。 (这会唤醒他们!)

我尝试更改第五行“elif [ -f“$i”-a -mtime +21];然后" -删除文件 (rm -i "$1")

不起作用,说“[:mtime:需要二元运算符”

我是否需要另一条 elif 语句,或者我可以使选择标准(仅限文件和“X”天以上的文件)在一行上起作用吗?

代码:

#!/bin/bash 

print_folder_recurse() {
    for i in "$1"/*; do
        if [ -d "$i" ]; then
            print_folder_recurse "$i"
        elif [ -f  "$i" ]; then
            rm -i  $i #(put the -i in there for #testing, it will be removed)
        fi    
    done
}

路径“/go/to/your/happy/place”

echo "Delete path: $path"
print_folder_recurse $path

谢谢。

答案1

find /your/directory -type f -daystart -mtime +20 -delete

删除-delete以执行试运行。

相关内容