diff options
Diffstat (limited to 'Master/tlpkg/libexec/rename')
-rwxr-xr-x | Master/tlpkg/libexec/rename | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Master/tlpkg/libexec/rename b/Master/tlpkg/libexec/rename new file mode 100755 index 00000000000..d3ba65e4827 --- /dev/null +++ b/Master/tlpkg/libexec/rename @@ -0,0 +1,98 @@ +#!/usr/bin/env perl +# $Id$ +# rename files according to Perl expression. + +'di'; +'ig00'; + +if ($ARGV[0] eq "-n") { + shift; + $chicken = 1; +} else { + $chicken = 0; +} + +($op = shift) || die "Usage: rename [-n] perlexpr [filenames]\n"; +if (!@ARGV) { + @ARGV = <STDIN>; + chop(@ARGV); +} +for (@ARGV) { + $was = $_; + eval $op; + die $@ if $@; + unless ($was eq $_) { + if (-e $_) { + warn "rename: skipping $was to $_, already exists\n"; + next; + } + print "$was -> $_\n"; + $chicken + || rename($was,$_) + || warn "rename($was->$_) failed: $!"; + } +} +############################################################################## +# Added -n option somewhere in these decades ... --karl +# +# Revision 4.0 91/03/20 01:11:53 lwall +# 4.0 baseline. +# +# Revision 3.0.1.2 90/08/09 03:17:57 lwall +# patch19: added man page for relink and rename + + # These next few lines are legal in both Perl and nroff. + +.00; # finish .ig + +'di \" finish diversion--previous line must be blank +.nr nl 0-1 \" fake up transition to first page again +.nr % 0 \" start at page 1 +';<<'.ex'; #__END__ ############# From here on it's a standard manual page ############ +.TH RENAME 1 "May 3, 2021" +.\" original date was "July 30, 1990" +.AT 3 +.SH NAME +rename \- renames multiple files +.SH SYNOPSIS +.B rename [-n] perlexpr [files] +.SH DESCRIPTION +.I Rename +renames the filenames supplied according to the rule specified as the +first argument. +The argument is a Perl expression which is expected to modify the $_ +string in Perl for at least some of the filenames specified. +If a given filename is not modified by the expression, it will not be +renamed. +If no filenames are given on the command line, filenames will be read +via standard input. +.PP +If the destination file already exists (-e), the rename is skipped. +.PP +With -n, show what would be renamed without changing anything. +.PP +For example, to rename all files matching *.bak to strip the extension, +you might say +.nf + + rename 's/\e.bak$//' *.bak + +.fi +To translate uppercase names to lower, you'd use +.nf + + rename 'y/A-Z/a-z/' * + +.fi +.SH ENVIRONMENT +No environment variables are used. +.SH FILES +.SH AUTHOR +Larry Wall +.SH "SEE ALSO" +mv(1) +.br +perl(1) +.SH DIAGNOSTICS +If you give an invalid Perl expression you'll get a syntax error. +.ex |