Argument list too long

Written by Benjamin Cane on 2011-07-13 03:40:22 | 1 min read

If you've been an administrator for long enough eventually you will have run into an issue like so.

[[email protected] toomany]$ rm *  
bash: /bin/rm: Argument list too long

This can be a confusing issue at first if you've never run into it. The work around is pretty easy but first lets examine why you got this error.

The reason you see Argument list too long is because when you run your command you are passing it too many arguments.

In this case (which is the most common time you will see this) we tried to rm all of the files in my directory which had 300,000 files in it; that was a few too many arguments for rm.

Even though you typed

[[email protected] toomany]$ rm *

When the * is interpreted by bash it becomes

[[email protected] toomany]$ rm file1 file2 file3 file4 file5 [files6 - file299999] file300000

Within the kernel there is a limit to how many arguments you can pass to a command. This is there to prevent misuse of the system by processes that may want to go a little too wild.

Now lets get to the quick workarounds.

Option 1:

[[email protected] toomany]$ for x in `ls`; do rm $x; done

This is a pretty easy option, Using a for loop every line of output from ls executes an rm.

Option 2:

[[email protected] toomany]$ ls | xargs rm

This will take the output of ls and send it to the command xargs which will then breakup the output and run multiple rm commands with smaller sets of arguments.

Option 3:

[[email protected] toomany]$ find ./ -maxdepth 1 -type f -exec rm {} \;

You could also use find with the -exec flag but this can be a little dangerous, if you don't have the -maxdepth option find will also delete files in sub-directories. You may or may not want that.

With that said in certain situations Option 2 and 1 are also dangerous so be careful whenever you are performing file options like the above.


Picture of Benjamin Cane

Benjamin is a Systems Architect working in the financial services industry focused on platforms that require Continuous Availability. He has been working with Linux and Unix for over 10 years now and has recently published his first book; Red Hat Enterprise Linux Troubleshooting Guide.

Publications

Identify, capture and resolve common issues faced by Red Hat Enterprise Linux administrators using best practices and advanced troubleshooting techniques

What people are saying:
Excellent, excellent resource for practical guidance on how to troubleshoot a wide variety of problems on Red Hat Linux. I particularly enjoyed how the author made sure to provide solid background and practical examples. I have a lot of experience on Red Hat but still came away with some great practical tools to add to my toolkit. - Amazon Review

Sponsored by