0

我需要编写一个递归脚本来删除名为“date-2012-01-01_12_30”的子文件夹中的所有文件夹,但保留两个最新的。

/var/www/temp/updates/ 然后按“日期”和“代码”显示数百个文件夹

例如

/var/www/temp/updates/2012-01-01/temp1/date-2012-01-_12_30
/var/www/temp/updates/2012-01-01/temp1/date-2012-02-_13_30
/var/www/temp/updates/2012-01-01/temp1/date-2013-11-_12_30
/var/www/temp/updates/2012-01-01/temp2/date-2012-01-_12_30

我正在考虑使用 find 来获取文件夹,但不确定如何知道我可以删除哪些文件夹,因为脚本必须知道日期 - 文件夹在那个子文件夹中,哪些是最新的

嗯,有什么帮助会很好吗?

代码:

$PATH=/var/www/temp/updates/*/*
find $PATH -type d -name "date-*" -printf '%T@ %p\n' | sort -n | head -n -2 | cut -f2- | xargs ls -l

该脚本将需要遍历数千个不同的文件夹并保留两个最新的文件夹-这里有人帮助过,但我没有更改它以便搜索数千个文件夹

4

2 回答 2

0

你能试试这个脚本吗

PATH1=/var/www/temp/updates
find $PATH1 -iname "date-*" -print0 | ls -tr | tail -2 | xargs -I file rm -fr file

谢谢

于 2013-03-25T13:52:16.567 回答
0

实际上,我认为脚本会正常工作,因为 find 将遍历 /updates/ 下的所有文件夹

$PATH=/var/www/temp/updates/*/*
find $PATH -type d -name "date-*" -printf '%T@ %p\n' | sort -n | xargs rm -rf
于 2013-03-25T14:04:06.543 回答