LINUX.ORG.RU

Perl проблема с rename

 , ,


1

3

Есть папка с кучей файлов, имя которых нужно обрезать на 20 символов. Соль в том, что ничего не переименовывается. Вот сам код: http://pastebin.com/DQUrD4mn

Пробовал запилить отдельный скрипт, который только переименует файл, для проверки. Все работает. Вот он: http://pastebin.com/7VgKTH5a

Надеюсь на ваш совет

P.S. Переписывал много раз, данные для проверки выводил, все переменные прошерстил, делал черз массив, все равно ничего не выходит.


lol@lol-laptop:/tmp/lol2$ ls
12-08-09-212144_1280x800_scrot.png  12-08-20-230743_1280x800_scrot.png  12-08-27-010218_1280x800_scrot.png  12-09-02-231733_1280x800_scrot.png
12-08-15-010508_1280x800_scrot.png  12-08-20-230803_1280x800_scrot.png  12-08-29-225939_1280x800_scrot.png  12-09-09-182703_1280x800_scrot.png
12-08-19-225514_1280x800_scrot.png  12-08-25-000428_1280x800_scrot.png  12-08-29-225950_1280x800_scrot.png  12-09-09-183138_1280x800_scrot.png
12-08-20-225724_1280x800_scrot.png  12-08-27-010117_1280x800_scrot.png  12-08-29-225955_1280x800_scrot.png  12-09-09-183913_1280x800_scrot.png
12-08-20-230501_1280x800_scrot.png  12-08-27-010206_1280x800_scrot.png  12-09-02-203338_1280x800_scrot.png  12-09-09-183958_1280x800_scrot.png
12-08-20-230619_1280x800_scrot.png  12-08-27-010214_1280x800_scrot.png  12-09-02-223948_1280x800_scrot.png  12-09-09-235309_1280x800_scrot.png
lol@lol-laptop:/tmp/lol2$ rename 's/.{2}(.*)/$1/' *
lol@lol-laptop:/tmp/lol2$ ls
-08-09-212144_1280x800_scrot.png  -08-20-230743_1280x800_scrot.png  -08-27-010218_1280x800_scrot.png  -09-02-231733_1280x800_scrot.png
-08-15-010508_1280x800_scrot.png  -08-20-230803_1280x800_scrot.png  -08-29-225939_1280x800_scrot.png  -09-09-182703_1280x800_scrot.png
-08-19-225514_1280x800_scrot.png  -08-25-000428_1280x800_scrot.png  -08-29-225950_1280x800_scrot.png  -09-09-183138_1280x800_scrot.png
-08-20-225724_1280x800_scrot.png  -08-27-010117_1280x800_scrot.png  -08-29-225955_1280x800_scrot.png  -09-09-183913_1280x800_scrot.png
-08-20-230501_1280x800_scrot.png  -08-27-010206_1280x800_scrot.png  -09-02-203338_1280x800_scrot.png  -09-09-183958_1280x800_scrot.png
-08-20-230619_1280x800_scrot.png  -08-27-010214_1280x800_scrot.png  -09-02-223948_1280x800_scrot.png  -09-09-235309_1280x800_scrot.png
lol@lol-laptop:/tmp/lol2$ 

rename, который от Ларри.

anonymous
()
Ответ на: комментарий от anonymous

В вашем скрипте лень разбираться. Но дам советы:
* use strict
* use warnings
* убрать лишние переменные
* etc
А так есть коробочный rename, не пишите велосипеды.

anonymous
()

Соль в том, что ничего не переименовывается.

rename(...) || die «$filename -> $newname: $!\n»;

AITap ★★★★★
()

Что то вроде того?

perl -w -e 'for(<*>){my $old=$_;$_=substr($_,0,20);print $_,"\n";rename $old,$_||die $!}'

disarmer ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.