Re: ls and rm: "argument list too long"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]




On Oct 18, 2008, at 8:13 PM, mouss wrote:

Jussi Hirvi a écrit :
Since when is there a limit in how long directory listings CentOS can show (ls), or how large directories can be removed (rm). It is really annoying to
say, for example

   rm -rf /var/amavis/tmp

and get only "argument list too long" as feedback.


I doubt this. "argument list too long" is a shell error, and in your
command the shell doesn't see many arguments.

I guess you want to remove amavisd-new temp files and you did
	rm -rf /var/amavis/tmp/*

In this case, the shell would need to replace that with
	rm -rf /var/amavis/tmp/foo1 /var/amavis/tmp/foo2 ....
in which case, it needs to store these arguments in memory. so it would need to allocate enough memory for all these before passing them to the
rm command. so a limitation is necessary to avoid consuming all your
memory. This limitation exists on all unix systems that I have seen.



Is there a way to go round this problem?


Since amavisd-new temp files have no spaces in them, you can do
	for f in in /var/amavis/tmp/*; do rm -rf $f; done
(Here, the shell does the loop, so doesn't need to expand the list at
once).

alternatively, you could remove the whole directory (rm -rf
/var/amavis/tmp) and recreate it (don't forget to reset the owner and
permisions).



I have CentOS 5.2.



Possible to learn something new every day. I would have expected the for loop to fail too, thinking it would attempt to expand the wildcard before starting it's iteration.

_______________________________________________
CentOS mailing list
CentOS@xxxxxxxxxx
http://lists.centos.org/mailman/listinfo/centos


[Index of Archives]     [CentOS]     [CentOS Announce]     [CentOS Development]     [CentOS ARM Devel]     [CentOS Docs]     [CentOS Virtualization]     [Carrier Grade Linux]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Linux USB]
  Powered by Linux