If you want to do this in Perl, take a look at File::Tools. Specifically, the copydir function will do exactly what you need. If modules rub you wrong (though they really shouldn't), this might do for you:
#!/usr/local/bin/perl -w use strict; use Carp; use File::Copy "cp"; # need two arguments scalar @ARGV == 2 or print("Usage: copy.pl <source_dir> <target_dir>"), exit; # record the bases of the source and target my ($source_dir, $target_dir) = @ARGV; CopyDir($source_dir, $target_dir); sub CopyDir { my ($source_dir, $target_dir) = @_; # read the source directory opendir (DIR, $source_dir) or croak "Couldn't open $source_dir: $! +"; my @list = readdir(DIR); # get a list of directories my @dirs = grep {!/^\./ && -d "$source_dir/$_"} @list; # get a list of real files + my @files = grep {-f "$source_dir/$_"} @list; # create the target if necessary (!-e $target_dir and !-d $target_dir and mkdir $target_dir) or croak "Couldn't mkdir $target_dir: $!"; # recursively copy subdirectories map CopyDir("$source_dir/$_", "$target_dir/$_"), @dirs; # copy real files last map cp("$source_dir/$_", "$target_dir/$_"), @files; }
In reply to Re: cdrom stuff...
by athomason
in thread cdrom stuff...
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |