मैंने देखा है कि लोग एक rename
कमांड का उल्लेख करते हैं , लेकिन यह यूनीक्स सिस्टम पर नियमित रूप से उपलब्ध नहीं है (जैसा कि लिनक्स सिस्टम के विपरीत है, या साइगविन - दोनों पर, नाम बदलना एक स्क्रिप्ट के बजाय एक निष्पादन योग्य है)। उस संस्करण की rename
काफी सीमित कार्यक्षमता है:
rename from to file ...
यह बदल देता से साथ फ़ाइल नाम के हिस्से के लिए , और उदाहरण के आदमी पेज में दिए गए है:
rename foo foo0 foo? foo??
यह foo1 से foo01, और foo10 से foo010, आदि का नाम बदल देता है।
मैं एक पर्ल स्क्रिप्ट का उपयोग rename
करता हूं, जिसे मैंने मूल रूप से पहले संस्करण कैमल बुक, लगभग 1992 से खोदा था, और फिर फ़ाइलों का नाम बदलने के लिए बढ़ाया गया था।
#!/bin/perl -w
#
# @(#)$Id: rename.pl,v 1.7 2008/02/16 07:53:08 jleffler Exp $
#
# Rename files using a Perl substitute or transliterate command
use strict;
use Getopt::Std;
my(%opts);
my($usage) = "Usage: $0 [-fnxV] perlexpr [filenames]\n";
my($force) = 0;
my($noexc) = 0;
my($trace) = 0;
die $usage unless getopts('fnxV', \%opts);
if ($opts{V})
{
printf "%s\n", q'RENAME Version $Revision: 1.7 $ ($Date: 2008/02/16 07:53:08 $)';
exit 0;
}
$force = 1 if ($opts{f});
$noexc = 1 if ($opts{n});
$trace = 1 if ($opts{x});
my($op) = shift;
die $usage unless defined $op;
if (!@ARGV) {
@ARGV = <STDIN>;
chop(@ARGV);
}
for (@ARGV)
{
if (-e $_ || -l $_)
{
my($was) = $_;
eval $op;
die $@ if $@;
next if ($was eq $_);
if ($force == 0 && -f $_)
{
print STDERR "rename failed: $was - $_ exists\n";
}
else
{
print "+ $was --> $_\n" if $trace;
print STDERR "rename failed: $was - $!\n"
unless ($noexc || rename($was, $_));
}
}
else
{
print STDERR "$_ - $!\n";
}
}
यह आपको फ़ाइल नामों को मैप करने के लिए किसी भी पर्ल विकल्प या ट्रांसपेरेंट कमांड को लिखने की अनुमति देता है। अनुरोधित विशिष्ट उदाहरण में, आप उपयोग करेंगे:
rename 's/^/new./' original.filename