Я пытаюсь записать сценарий жемчуга для добавления имени префикса на файле (~100 файлов), но я являюсь отказавшим, чтобы сделать его.
Случай в качестве примера это, что я имею в виду:
abc.jpg change to NYear_abc.jpg
def.jpg change to NYear_def.jpg
ghi.jpg change to NYear_ghi.jpg
Это - то, что я пытаюсь искать вокруг и записать это:
#!/usr/bin/perl
for (filename in "*".jpg;)
do {rename "$filename" "prefix_$filename";}
Это показывает мне недостающий оператор, кто-либо может помочь?
Я не знаю о синтаксисе жемчуга и сценариях жемчуга, но я могу помочь Вам переименовать все .jpg файлы с rename
команда как следующее:
Первый необходимо переключить каталог, что у Вас есть весь .jpg там. например, если файлы хранятся в /home/star1017/jpg-file
, я ввожу как это:
cd /home/star1017/jpg-file
тогда работает
rename -n 's/(.*)\.jpg$/prefix_$1.jpg/' *.jpg
Соответствие все (.*)
, который является концами $
с .jpg
, тогда добавляют prefix_
и печатают подобранную группу $1
(это означает, печатают подобранную группу при помощи ее обратной ссылки), и затем распечатайте расширение. Команда работает за всем *.jpg
файлы.
Тест:
file01.jpg renamed as prefix_file01.jpg
file02.jpg renamed as prefix_file02.jpg
file03.jpg renamed as prefix_file03.jpg
file04.jpg renamed as prefix_file04.jpg
file05.jpg renamed as prefix_file05.jpg
Или если Вы не хотите переключаться на тот каталог, выполните это:
rename -n 's/(.*)\/(.*)\.jpg$/$1\/prefix_$2.jpg/' /home/star1017/jpg-file/*.jpg
в конце, если Вы гарантируете тест, удаляют -n
, опция к реальному переименовывает на фактических файлах.
Вы хотели сценарий жемчуга, вот Ваш сценарий Perl ;)
#!/usr/bin/perl
use strict;
use warnings;
foreach $_ (@ARGV) {
rename($_, "NYear_$_");
}
При принятии название сценария foo
, запустите с
./foo *.jpg
Пример
% ls *.jpg
abc.jpg def.jpg ghi.jpg
% ./foo *.jpg
% ls *.jpg
NYear_abc.jpg NYear_def.jpg NYear_ghi.jpg