İnsanların bir rename
komuttan bahsettiğini gördüm , ancak bu, Unix sistemlerinde rutin olarak mevcut değil (örneğin Linux sistemlerinde veya Cygwin - her ikisinde de yeniden adlandırma komut dosyası yerine çalıştırılabilirdir). Bu sürümünün rename
oldukça sınırlı bir işlevselliği vardır:
rename from to file ...
O değiştirir gelen dosya isimlerinin parçası To ve kılavuz sayfasında verilen örnekte olduğu:
rename foo foo0 foo? foo??
Bu, foo1'i foo01'e ve foo10'u foo010'a vb. Yeniden adlandırır.
rename
İlk baskı Camel kitabından çıkardığım ve daha sonra dosyaları yeniden adlandırmak için genişlettiğim bir Perl betiği kullanıyorum .
#!/bin/perl -w
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";
}
}
Bu, dosya adlarını eşlemek için herhangi bir Perl ikamesi veya transliterate komutu yazmanıza olanak tanır. İstenen belirli örnekte şunları kullanacaksınız:
rename 's/^/new./' original.filename