Linux / UNIX : Argument list too long error in shell and solution

by Vivek Gite · 8 comments

Q. I’m new to Linux. We have a backup server and most our developer sftp or ftp and upload files to our server. I just need backup of last 4 weeks. So if I try to list or remove directory I get an error cannot remove directory.

So my question is why am I getting an "Argument list too long" error message when executing some commands in the shell?

A. Each command under Linux/UNIX accepts a parameter commonly known as command arguments (or args).

For example, the command cd /etc is considered as 1 command line arguments, namely, /etc. Some command can accept more than 2 argument and act on supplied args. For example cp command:
$ cp /etc/file1 /etc/file2 /etc/file3 /mnt/pen

cp command has total 4 command line arguments. The shell can hold a maximum of 131072 bytes for command line arguments. If you try to pass more than that number you will greeted with an error that read as follows:

Argument list too long

Remember each character requires one byte of storage.

How do I get rid of this problem while using rm / ls or any other shell command?

The best way to deal with this problem is to use wild cards. For example, just list a directory starting with a character:
$ ls a*
or
$ rm a*

You can also use for loop to deal with group of files:

for fileset in a b c d e f g h i j k l m n o p q r s t v w x z
do
   /bin/rm $fileset*
done

Featured Articles:

Want to read Linux tips and tricks, but don't have time to check our blog everyday? Subscribe to our daily email newsletter to make sure you don't miss a single tip/tricks. Subscribe to our weekly newsletter here!

{ 8 comments… read them below or add one }

1 vinod 07.09.07 at 10:55 am

How to find out who all user modified which files

2 vinod 07.09.07 at 10:59 am

how to allow telnet or ssh login from a specified ip to freebsd server and other to be denied

3 vinod 07.09.07 at 11:04 am

steps of Maintainence of a freebsd server and what all pre precaution need to be taken

4 Deepak 06.02.08 at 12:00 am

What about for recursive copy??

5 tom 08.27.08 at 8:06 am

just use:
ls|xargs rm

cheers
tom

6 Noel 08.24.09 at 4:16 am

Tom you genious! Gone through all the complex methods that didn’t work, and you use the most simple way. Thank you.

7 prabhu 08.31.09 at 5:35 am

-bash: /bin/mv: Argument list too long
I am Getting th eavove error message while moving file from one dir to other.please help me to solve this problem.I hv root permission too.

8 Alex 10.16.09 at 3:10 pm

How about this:

find . | xargs rm

It will wipe out just about anything.

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Previous FAQ:

Next FAQ:

nixCraft FAQ PDF Collection Now Available To All