#!/usr/bin/python import os import re import sys class Filename: def __init__(self, filename, prefix, number, suffix): self.filename = filename self.prefix = prefix self.number = number self.len_number = len(number) self.suffix = suffix def new_filename(self, num_zeros): return self.prefix + ('0' * num_zeros) + self.number + self.suffix def __str__(self): return '%s/%s/%d/%s' % (self.prefix, self.number, self.len_number, self.suffix) __repr__ = __str__ def main(): regex = re.compile('^([^0-9]*)([0-9]+)([^0-9]*)') filenames = [] for filename in sys.argv[1:]: sys.stderr.write('Considering %s\n' % filename) match_obj = regex.match(filename) if match_obj is not None: filenames.append(Filename(filename, match_obj.group(1), match_obj.group(2), match_obj.group(3))) else: sys.stderr.write('%s: %s does not fit "The pattern"\n' % (sys.argv[0], filename)) longest = max(filename.len_number for filename in filenames) for filename in filenames: if filename.len_number != longest: num_zeros = longest - filename.len_number new_filename = filename.new_filename(num_zeros) sys.stderr.write('%s: Renaming %s to %s\n' % (sys.argv[0], filename.filename, new_filename)) os.rename(filename.filename, new_filename) main()