#!/usr/bin/env python import os,re, datetime d = '/var/lib/pacman/local' packages = os.listdir(d) packages.sort() packages.remove('ALPM_DB_VERSION') pkgname_search = re.compile('^(.*?)-[0-9]') old_packages = [] for pkg1 in packages: if pkg1 in old_packages: continue #get package name matches = pkgname_search.findall(pkg1) print(pkg1) if matches == []: continue pkgname = matches[0] #look for other items with the same package name for pkg2 in packages: if pkg2 == pkg1: continue if pkg2 in old_packages: continue if pkgname == pkgname_search.findall(pkg2)[0]: # We now have two duplicate packages, we want to delete the old one old_package = pkg1 path1 = os.path.join(d,pkg1) path2 = os.path.join(d,pkg2) if os.stat(path1).st_mtime > os.stat(path2).st_mtime: old_package = pkg2 old_packages.append(old_package) #print ('duplicate found:\t') #print (pkg1) #print (pkg2) #print ('old:', old_package) oldpath = os.path.join(d,old_package) target = os.path.join('/var/lib/pacman/OLD',old_package) cmd = 'mv "%s" "%s"' % (oldpath, target) #double-check that the oldpath still exists (it may have been removed in a previous pass) if os.path.exists(oldpath): print(cmd) os.system(cmd)