删除所有文件夹的脚本除了最后修改最后两个?

时间:2013-03-25 12:13:40

标签: linux bash

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

/ var / www / temp / updates /然后是'date'和'code'

的数百个文件夹

e.g。

/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

该脚本需要经过数千个不同的文件夹,并保留最近的两个文件夹 - 此前有人在此帮助过,但我没有为数千个要搜索的文件夹进行更改

2 个答案:

答案 0 :(得分:0)

你能试试这个剧本吗?

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

感谢名单

答案 1 :(得分:0)

实际上我认为该脚本可以正常运行,因为查找将遍历/ updates /

下的所有文件夹
$PATH=/var/www/temp/updates/*/*
find $PATH -type d -name "date-*" -printf '%T@ %p\n' | sort -n | xargs rm -rf