From 42f49bc802af34f1b272dcd2f20c99783d53782d Mon Sep 17 00:00:00 2001 From: Fajran Iman Rusadi Date: Wed, 24 Sep 2008 14:48:40 +0200 Subject: [PATCH] Initial release of group-file-by-date --- group-file-by-date/group.py | 66 +++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 group-file-by-date/group.py diff --git a/group-file-by-date/group.py b/group-file-by-date/group.py new file mode 100755 index 0000000..5017109 --- /dev/null +++ b/group-file-by-date/group.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python + +import sys +import getopt +import os +import time + +opts, args = getopt.getopt(sys.argv[1:], "s:d:p:h") + +source = None +destination = None +show_help = False +pattern = "%Y-%m-%d" + +for o, a in opts: + if o == "-s": + source = a + elif o == "-d": + destination = a + elif o == "-p": + pattern = a + elif o == "h": + show_help = True + +def help(): + print """Usage: %s -s source-dir -d destination-dir [-p pattern] + +Options + -s SOURCE directory that contains the files + -d DESTINATION target directory + -p PATTERN directory pattern, uses Python's date.strftime format""" % sys.argv[0] + +if source == None or destination == None or show_help: + help() + sys.exit(1) + + +files = {} + +print source + +for file in os.listdir(source): + + fullname = os.path.join(source, file) + + if not os.path.isfile(fullname): + continue + + try: + mtime = os.path.getmtime(fullname) + dir = time.strftime(pattern, time.localtime(mtime)) + + group = files.get(dir, []) + group.append(file) + files[dir] = group + + except: + print "ngaco" + +for dir in files: + print "mkdir %s" % os.path.join(destination, dir) + + for file in files[dir]: + print "mv \"%s\" \"%s\"" % (os.path.join(source, file), os.path.join(destination, dir, file)) + +