Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to delete X number of files in a directory

Tags:

linux

unix

To get X number of files in a directory, I can do:

$ ls -U | head -40000

How would I then delete these 40,000 files? For example, something like:

$ "rm -rf" (ls -U | head -40000)
like image 986
David542 Avatar asked Oct 16 '25 03:10

David542


1 Answers

The tool you need for this is xargs. It will convert standard input into arguments to a command that you specify. Each line of the input is treated as a single argument.

Thus, something like this would work (see the comment below, though, ls shouldn't be parsed this way normally):

ls -U | head -40000 | xargs rm -rf

I would recommend before trying this to start with a small head size and use xargs echo to print out the filenames being passed so you understand what you'll be deleting.

Be aware if you have files with weird characters that this can sometimes be a problem. If you are on a modern GNU system you may also wish to use the arguments to these commands that use null characters to separate each element. Since a filename cannot contain a null character that will safely parse all possible names. I am not aware of a simple way to take the top X items when they are zero separated.

So, for example you can use this to delete all files in a directory

find . -maxdepth 1 -print0 | xargs -0 rm -rf
like image 131
Adam B Avatar answered Oct 18 '25 23:10

Adam B



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!