From owner-freebsd-questions@FreeBSD.ORG Sun Jul 26 19:09:46 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B064F106564A for ; Sun, 26 Jul 2009 19:09:46 +0000 (UTC) (envelope-from mel.flynn+fbsd.questions@mailing.thruhere.net) Received: from mailhub.rachie.is-a-geek.net (rachie.is-a-geek.net [66.230.99.27]) by mx1.freebsd.org (Postfix) with ESMTP id 6C9208FC12 for ; Sun, 26 Jul 2009 19:09:46 +0000 (UTC) (envelope-from mel.flynn+fbsd.questions@mailing.thruhere.net) Received: from smoochies.rachie.is-a-geek.net (mailhub.lan.rachie.is-a-geek.net [192.168.2.11]) by mailhub.rachie.is-a-geek.net (Postfix) with ESMTP id 793747E818 for ; Sun, 26 Jul 2009 11:09:45 -0800 (AKDT) From: Mel Flynn To: freebsd-questions@freebsd.org Date: Sun, 26 Jul 2009 11:09:44 -0800 User-Agent: KMail/1.11.4 (FreeBSD/8.0-BETA2; KDE/4.2.4; i386; ; ) References: <20090725222918.AC51DB7E0@kev.msw.wpafb.af.mil> <200907260045.12045.mel.flynn+fbsd.questions@mailing.thruhere.net> <8A69BBD9-5F3C-44B8-96C0-586C1B5A386F@identry.com> In-Reply-To: <8A69BBD9-5F3C-44B8-96C0-586C1B5A386F@identry.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200907261109.44586.mel.flynn+fbsd.questions@mailing.thruhere.net> Subject: Re: limit to number of files seen by ls? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Jul 2009 19:09:47 -0000 On Sunday 26 July 2009 10:24:31 John Almberg wrote: > On Jul 26, 2009, at 4:45 AM, Mel Flynn wrote: > > On Saturday 25 July 2009 23:34:50 Matthew Seaman wrote: > >> It's fairly rare to run into this as a practical > >> limitation during most day to day use, and there are various > >> tricks like > >> using xargs(1) to extend the usable range. Even so, for really big > >> applications that need to process long lists of data, you'ld have > >> to code > >> the whole thing to input the list via a file or pipe. > > > > ls itself is not glob(3) aware, but there are programs that are, > > like scp. So > > the fastest solution in those cases is to single quote the argument > > and let > > the program expand the glob. for loops are also a common work around: > > ls */* == for f in */*; do ls $f; done > > > > Point of it all being, that the cause of the OP's observed behavior > > is only > > indirectly related to the directory size. He will have the same > > problem if he > > divides the 4000 files over 4 directories and calls ls */* > > H'mmm... I haven't come back on this question, because I want my next > question to be an intelligent one, but I'm having a hard time > understanding what is going on. I'm reading up on this, and as soon > as I know enough to either understand the issue, or ask an > intelligent question, I will do so... When a program is executed with arguments, there is a system imposed limit on the size of this argument list. On FreeBSD this limit can be seen with sysctl kern.argmax, which is the length in bytes. When you do "ls *", what really happens is that the shell expands the asterisk to all entries in the current directory, except entries starting with a dot ("hidden" files and directories). As a result, ls is really called as: ls file1 file2 .... fileN If the string length of file1 to fileN is bigger then kern.argmax, then you will get argument list too long error. -- Mel