[Pdx-pm] command line question
Colin Kuskie
ckuskie at dalsemi.com
Mon Jul 12 16:16:49 CDT 2004
On Mon, Jul 12, 2004 at 02:10:37PM -0700, Thomas J Keller wrote:
> This seems like one of those easy things easier ...things
> I want to rename all the files in a directory substituting an
> underscore for any spaces in the filename. I can write a program using
> IO::Dir, But it seems like that should be doable from the command line.
> Help?
> Thanks,
> Tom K.
The original perl distribution used to include a program called rename
that allowed you to pass a line of perl code that would modify each
filename in any way you want.
ren 'tr/ /_/;' *
#!/usr/local/bin/perl
#Usage: ren perlexpr [files]
($op = shift) or die "Usage: ren perlexpr [filenames]\n";
if (!@ARGV) {
@ARGV = <STDIN>;
chop(@ARGV);
}
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
unless ($was eq $_) {
rename($was,$_) or die "Unable to rename $was: $!\n";
}
}
=head1 NAME
B<ren> - use a perl expression to rename multiple files
=head1 SYNOPSIS
B<ren> perl_expression [files]
=head1 DESCRIPTION
B<Ren> uses a perl expression to rename multiple files. For more information about
perl expressions, consult the perl man pages, F<Learning Perl> by Randal
Schwartz, F<Programming Perl> by Larry Wall, or your local friendly
Perl programmer.
For example, to rename all files foo.* to bar.*, use
ren 's/foo/bar/;' foo.*
=head1 AUTHORS
Randal Schwartz, Larry Wall
=head1 DATE
October 11, 1996
=cut
More information about the Pdx-pm-list
mailing list