如何在多个文件夹层次结构中删除除最后几个之外的zip文件

时间:2016-06-22 07:10:50

标签: linux shell unix

文件夹结构如下:

Main_Folder:
           A
             --> File1.zip
             --> File2.zip
             A11
                --> File3.zip
                --> File4.zip
             A12
                --> File5.zip
                --> File6.zip
           B
           C

类似地,对于B,B11,B12和B来说,这仍然是相同的。 C,C11,C12分别为。 我想从Main_Folder路径执行命令,这样它就会遍历所有内部文件夹并删除除最后几个zip文件之外的所有zip文件。 你能帮助我实现这个目标吗?

我试过

find $PWD -printf "%TY-%Tm-%Td %TT %p\n" | sort -n | grep "zip" | head -n -5| xargs rm -rf

但这会保留整个最新文件,而不是文件夹。

1 个答案:

答案 0 :(得分:0)

您通常会选择一些您希望保留时间的时间。

# DANGEROUS!!!
$ find PATH -mtime +2 -name "*.zip" -delete

但你不能确定有足够的文件保存。例如如果您的备份在2天前停止,则可以删除上次备份。

首先检查您是否有足够的备份是件好事。 e.g。

existing=`find PATH -mtime -2 | wc -l`
if (( existing > 5 )); then
  find ... -delete
fi

请在运行前仔细测试代码。我没有检查上面片段的语法和计算。命令运行起来很危险。使用常识。

HTH

现在我看到你要删除文件夹了。然后,您可以搜索-mtime ... -type d并使用上述逻辑。但-delete {}} {}} {}} {{{}} {{{{{{{{{{{{{

或者您可以获取文件夹列表,然后删除它们上面的zip文件。这实际上取决于具体的用例。