文件夹结构如下:
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
但这会保留整个最新文件,而不是文件夹。
答案 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文件。这实际上取决于具体的用例。