diff options
-rwxr-xr-x | Master/tlpkg/libexec/ctan2tds | 4 | ||||
-rwxr-xr-x | Master/tlpkg/libexec/rename | 98 |
2 files changed, 101 insertions, 1 deletions
diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 4085517a719..e30610564b8 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -3704,8 +3704,10 @@ sub sanitize_file_names { # -0 in case of spaces or other chars in filenames, which would be # parsed into words by the shell otherwise, cause trouble with svn, etc. if (-d $dir) { + my $libexec = "$mydir/../libexec"; + my $rename = "$libexec/rename"; &SYSTEM ("find $dir -print0 " - . "| xargs -0 /l/bin/rename 's![^-_A-Za-z0-9.,/+]!!g'"); + . "| xargs -0 $rename 's![^-_A-Za-z0-9.,/+]!!g'"); } else { die "$0:sanitize_file_names: not a directory, goodbye: $dir\n"; } 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 |