summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMaster/tlpkg/libexec/ctan2tds4
-rwxr-xr-xMaster/tlpkg/libexec/rename98
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