#!/usr/bin/python import os import sys import time # Minimum number of lines in file to be kept intact min_file = 3 # Shall we remove files with content merged with another file? #dont_delete = False dont_delete = True def count_lines(filename): cnt = 0 for line in file(filename): cnt = cnt + 1 return cnt def merge(intofile, fromfile): intofile = file(intofile, "a"); fromfile = file(fromfile, "r"); str = fromfile.read() intofile.write(str) intofile.close() fromfile.close() def clean_user(arg, dirnames, fnames): if dirnames == arg: return print "Doing", dirnames fnames.sort() grouped = None for fname in fnames: name = dirnames + "/" + fname lines = count_lines(name) sys.stdout.write("%s has %d lines -- " % (name, lines)) if lines < min_file: if grouped <> None: merge(grouped, name); if dont_delete: os.rename(name, name + ".removed") else: os.remove(name) print "merged" else: grouped = name print "omitted" else: grouped = None print "omitted" def help(): print "Usage: ./clean-up " print "As the program is not fool-proof and works recursively" print "*** DON'T RUN IT ANYWHERE UNLESS YOU ARE SURE THIS IS WHAT" print "YOU WANT TO DO. ***" print "Also, please make a copy of files." print "Tested with plain-text logger and jabber account, ie.:" print "./clean-up ~/.purple/logs/jabber/account/" if len(sys.argv) < 2: help() else: dir = sys.argv[1] print "* Starting clean-up in", dir, "in 3 seconds..." time.sleep(3) os.path.walk(dir, clean_user, dir);