[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Delete 4 million files



On Wed, Mar 18, 2009 at 10:05:08PM +0100, Jörg-Volker Peetz wrote:
> kj wrote:
> > Now, I've been running the usual find . -type f -exec rm {} \;
> > but this is going at about 700,000 per day.  Would simply doing an rm
> > -rf on the Maildir be quicker?  Or is there a better way?
> 
> As already said, this calls rm for every file. Another alternative is with newer
> versions of find:
> 
>   find . -type f -exec rm {} \+
> 
> This calls rm for as many files as fit on the command line.
> But probably "rm -rf" is the fastest.

the '+' behavior is exactly why people use xargs:

 find . -type f | xargs rm

will not call rm N times for N files; rather, it will call rm
in batches of as many arguments as it can reasonably fit in
each call.

to see for yourself, compare:

$ find . -type f -exec echo CALL '{}' ';'
$ find . -type f -exec echo CALL '{}' '+'
$ find . -type f | xargs echo CALL
$ find . -type f | xargs -n 1 echo CALL

the number of times you see 'CALL' in the output is the number
of 'rm' calls you'd get.

--Rob*

p.s.  if you're chaining find and xargs and your filenames have
spaces and such in them, you'll want to use -print0 and -0 for
the find and xargs, repectively, to separate the filenames by
ascii NULs instead of spaces:

$ find . -name Sp\*
./Space Ghost Coast to Coast - table read.TiVo

$ find . -name Sp\* | xargs ls -l
ls: cannot access ./Space: No such file or directory
ls: cannot access Ghost: No such file or directory
ls: cannot access Coast: No such file or directory
ls: cannot access to: No such file or directory
ls: cannot access Coast: No such file or directory
ls: cannot access -: No such file or directory
ls: cannot access table: No such file or directory
ls: cannot access read.TiVo: No such file or directory

$ find . -name Sp\* -print0 | xargs -0 ls -l
-rw-r--r-- 1 robstar robstar 753751465 2008-09-06 02:53 ./Space Ghost Coast to Coast - table read.TiVo

-- 
/-------------------------------------------------------------\
| "If we couldn't laugh we would all go insane"               |
|              --Jimmy Buffett,                               |
|                "Changes in Latitudes, Changes in Attitudes" |
\-------------------------------------------------------------/


Reply to: