|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Alexander Lunyov 2:50/551.3 25 Jun 2003 18:25:35 To : All Subject : perl & recursive rename --------------------------------------------------------------------------------
* hi
Имеем скрипт
#!/usr/bin/perl -w
&do_it;
exit;
sub do_it {
foreach (<*>) {
$oldname = $_;
tr/a-z/A-Z/;
$newname = $_;
if ($oldname ne $newname) {
print "Moving $oldname -> $newname\n";
rename "$oldname", "$newname" or print "$!: $oldname\n";
}
if ( -d $newname ) {
chdir "$newname" || die "Can't cd to $newname $!\n";
&do_it;
}
}
}
Который призван перевести из нижнего в верхний регистр все, что попадется
по руку и дальше по каталогам. Имеем результат:
/usr/home/lan/hentai > ./mrename.pl
Moving asdasdSADS -> ASDASDSADS
No such file or directory: asdasdSADS
Moving ok -> OK
No such file or directory: ok
Moving ok -> OK
No such file or directory: ok
Moving ok -> OK
No such file or directory: ok
Moving dow-urls.sh -> DOW-URLS.SH
No such file or directory: dow-urls.sh
Moving download.sh -> DOWNLOAD.SH
No such file or directory: download.sh
Moving download2.sh -> DOWNLOAD2.SH
No such file or directory: download2.sh
Moving mrename.pl -> MRENAME.PL
No such file or directory: mrename.pl
Moving rename.pl -> RENAME.PL
No such file or directory: rename.pl
Moving urls -> URLS
No such file or directory: urls
Почему? Если оставить только тело функции, то есть без рекурсии, то в
текущем каталоге все работает.
* bye
---
* Origin: no sex until marriage! (c) Front242 (2:50/551.3)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/22493ef9bf33.html, оценка из 5, голосов 10
|