cp: Argument list too long

David Mandala plug-discuss@lists.plug.phoenix.az.us
09 Dec 2002 14:54:04 -0700


This should work from the command line, make sure to replace the
/newdir/ with a proper path for you. Can use cp also. Make sure to type
this all on one command line.

for file in $(ls *.pdf); do  mv $file /newdir/; done

Warning I can't test this with as many files as you have but this should
work.

Cheers,

Davidm

On Mon, 2002-12-09 at 14:15, Bill Earl wrote:
> Hello everyone!
>  
> I need to copy, and occasionally move, some directories that contain
> thousands of files, (like around 250,000 pdfs), and the problem I'm
> having is that in the Bash shell, both cp and mv commands seem to die
> at somewhere around 3,000 files, so that if I enter
>  
> cp /mydir/myfiles/*.pdf  /newdir/
>  
> I get the following error:
>  
> bash: /bin/cp: Argument list too long.  
>  
> I noticed that even just trying to list this many files can cause this
> error, depending on the syntax used. "ls /mydir/myfiles/*.pdf"
> generates the Argument list too long error, but "ls /mydir/myfiles"
> displays fine.
>  
> I can get around it using a python script and more fiddling around
> than I really want to do. I'd really like to be able to move these
> large numbers of files around just through the shell.
>  
> Is anyone aware of a separate file copying or moving (I need to do
> both, depending on the situation) utility that can handle very large
> numbers of files?  Would switching to a different shell solve this (if
> so, which one?), or is it a limit on the cp and mv commands?
>  
> Thanks!
>  
> Bill Earl
> Network Admin
> Spectrum Data Solutions, LLC
> www.bestbill.com
-- 
David IS Mandala
gpg fingerprint 8932 E7EF CCF5 1B8C 1B5C  A92E C678 795E 45B2 D952
Phoenix, AZ (480) 460-7546 HP, (602) 321-8277 CP
http://www.them.com/~davidm/