[TriLUG] cp errror "Argument list too long"
Greg Brown
gwbrown1 at gmail.com
Tue Jul 26 12:55:19 EDT 2005
Yeah, but wouldn't the ls called in your perl script still crap out
because of too many aruguments (files in the directory)?
Greg
On 7/26/05, William Sutton <william at trilug.org> wrote:
> It's not entirely hopeless...I tried the following and it appears to
> work...
>
> I created 4 .jpg files named 1.jpg through 4.jpg, containing the
> equivalent number. I then executed the following commands in sequence:
>
> touch num.mpeg
> convert -delay 0 num.mpeg 1.jpg num.mpeg
> convert -delay 0 num.mpeg 2.jpg num.mpeg
> convert -delay 0 num.mpeg 3.jpg num.mpeg
> convert -delay 0 num.mpeg 4.jpg num.mpeg
> convert -delay 0 num.mpeg 1.jpg num.mpeg
> convert -delay 0 num.mpeg 2.jpg num.mpeg
> convert -delay 0 num.mpeg 3.jpg num.mpeg
> convert -delay 0 num.mpeg 4.jpg num.mpeg
> convert -delay 20 num.mpeg num.mpeg
>
> You can see the files at http://trilug.org/~william/convert
>
> basically I think this can be made to work as I indicated below...see
> revised code:
>
> #!/usr/bin/perl
> #-----
> use strict;
>
> my $convert = `which convert`;
> chomp($convert);
>
> # change to suit your needs
> my $input_dir = "/home/william/convert";
> my $output_dir = "/home/william/public_html/convert";
> my $frame_delay = 20;
>
> my $output_file = "output.mpeg";
> my @input_files = map { chomp($_); $_; } `/bin/ls $input_dir`;
>
> foreach my $file (@input_files)
> {
> `mv $input_dir/$file $output_dir`;
> `$convert -delay 0 $output_dir/$output_file $output_dir/$file \
> $output_dir/$output_file`;
> unlink("$output_dir/$file");
> }
>
> `$convert -delay $frame_delay $output_dir/$output_file \
> $output_dir/$output_file`;
>
> #-----
>
> to join multiple mpeg files, I think you should be able to do the
> following:
>
> convert -delay 0 *.mpeg out.mpeg
>
> HTH!
>
> William Sutton
>
> On Mon, 25 Jul 2005, Michael Tharp wrote:
>
> > William Sutton wrote:
> >
> > >Maybe it's time to switch to Perl :)
> > >
> > >#-----
> > >my @file = map { chomp($_); $_; } `ls -1rt /path/to/files`;
> > >
> > >foreach my $file (@files)
> > >{
> > > next unless -f "/path/to/files/$file";
> > >
> > > `cp /path/to/file/$file /tmp/date`;
> > > # your convert code here
> > > # and, if you want, uncomment the next line
> > > # unlink ("/path/to/files/$file");
> > >}
> > >
> > >
> > The problem here is that he's not converting multiple
> > files ito multiple files, but rather multiple files into one
> > file, so I'm not sure this approach will help any. Perhaps
> > convert batches of as many files as will fit in one command
> > line, then seam the files together?
> >
> > Michael Tharp
> >
> --
> TriLUG mailing list : http://www.trilug.org/mailman/listinfo/trilug
> TriLUG Organizational FAQ : http://trilug.org/faq/
> TriLUG Member Services FAQ : http://members.trilug.org/services_faq/
> TriLUG PGP Keyring : http://trilug.org/~chrish/trilug.asc
>
More information about the TriLUG
mailing list