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

by Vivek Gite on May 4, 2007 · 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:

Share this with other sys admins!
Facebook it - Tweet it - Print it -

{ 8 comments… read them below or add one }

1 vinod July 9, 2007

How to find out who all user modified which files

Reply

2 vinod July 9, 2007

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

Reply

3 vinod July 9, 2007

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

Reply

4 Deepak June 2, 2008

What about for recursive copy??

Reply

5 tom August 27, 2008

just use:
ls|xargs rm

cheers
tom

Reply

6 Noel August 24, 2009

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

Reply

7 prabhu August 31, 2009

-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.

Reply

8 Alex October 16, 2009

How about this:

find . | xargs rm

It will wipe out just about anything.

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 13 + 9 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.



Previous post:

Next post: