No doubt the Unix find and remove command comes in very useful when cleaning up large folders. However find can quickly bump into the old “/usr/bin/find: Argument list too long” problem.
For reference here is a command that works well. Except of course when too many files or directories involved.
There is of course other ways to get this done with find, but I like python so I resorted to python as the example show below.
Here is an example that worked for me:
#!/usr/bin/env python## Adjust the humandays variable. Set to 2000 days until we feel more comfortable.
import osimport globimport timeimport shutil
humandays = 2000computerdays = 86400*humandaysnow = time.time()inputDirs = glob.glob('/usr/local/forms/*/input')
print "Script running on %s " % time.ctime(now)print "using physical path /usr/local/forms/*/input and only removing directories older than %s days." % (humandays)
for inputDir in inputDirs: for r,d,f in os.walk(inputDir): for dir in d: timestamp = os.path.getmtime(os.path.join(r,dir)) if now-computerdays > timestamp: try: print "modified: %s" % time.ctime(timestamp), removeDir=os.path.join(r,dir) print " remove ",removeDir, ## Better be 100% sure before you uncomment the rmtree line! ## shutil.rmtree(removeDir) ## Better be 100% sure before you uncomment the rmtree line! except Exception,e: print e pass else: print " -> success"