Remove Hundreds of Thousands of Files
If you need to remove tonnes of files in a directory, you will likely hit the "argument list too long" error when you try to "rm -f *.log.*". This is due to your shell trying to expand the wild card to actual filenames and it exceeded the ARG_MAX. In Linux, run "getconf ARG_MAX" to find out the limit. My Ubuntu showed 2097152 as my ARG_MAX.
If you are in this situation, you are better off using a high level scripting language such as Python. With Python, you do not have to 'exec' 'rm' for every file.
Here is my script to do this task efficiently:
#! /usr/bin/python import os,sys,glob nargv=len(sys.argv) if nargv==2: pattern='*%s*' % sys.argv[1] basedir=os.getcwd() elif nargv==3: pattern='*%s*' % sys.argv[1] basedir=sys.argv[2] else: print "Usage: %s pattern [directory]" % sys.argv[0] print " eg. %s .log - to remove *.log* in current directory" print " eg. %s 201207 /var/log/app - to remove *201207* in /var/log/app directory" print "" exit(1) os.chdir(basedir) for f in glob.glob(pattern): os.remove(f)