我需要编写一个递归脚本来删除名为'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
该脚本需要经过数千个不同的文件夹,并保留最近的两个文件夹 - 此前有人在此帮助过,但我没有为数千个要搜索的文件夹进行更改
答案 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