I must remove 200 000 files (all of them) from a folder, and I don't want to delete the folder itself.
using rm, I get an "Argument list too long" error. I've tried to do something with xargs, but I'm not a Shell Guy, so it doesn't work:
find -name * | xargs rm -f
You are doing everything right. It is the '*' that gives you a problem (the shell is expanding it into list of files instead of the
find
). The right syntax could be:(The latter is a bit less efficient since it will pass longer names to
xargs
, but you will hardly notice :-) )Alternatively, you could escape your '*' like this (however in that case it will also try also remove "." and ".."; it is not a biggie - you will just get a little warning :-) ):
If your file names contain spaces then use this:
The following command will delete all files from the current directory:
you can try
or
Kudos to quantas answer, here are some additions.
If you like to delete files with a particular name pattern you can write it like this. Also added -print so you can see what's happening as the files are being deleted.
This for instance deletes all jpegs in mydirectory.