Я использовал GPRename для пакетного переименования файлов; это гораздо более эффективно, чем индивидуальное исправление каждого файла, но все же кажется менее эффективным, чем могло бы быть, в первую очередь потому, что либо я не понимаю используемый синтаксис регулярного выражения, либо потому, что реализация регулярного выражения неполна1
список файлов следующего синтаксиса:
(01) - title of file1.avi
(02) - title of file2.avi
(03) - title of file3.avi
Я попытался использовать команду «заменить» (с выбранной опцией регулярного выражения, опция с учетом регистра отменена):
(\(\d{2}\))
Предварительный просмотр затем показывает (учитывая, что я еще не указал опцию «заменить на»):
title of file1.avi
title of file2.avi
title of file3.avi
Что здорово, очевидно, регулярное выражение идентифицирует правильную группу ((01)
). Теперь то, что я надеялся сделать (используя синтаксис JavaScript) в опции «заменить на», это использовать:
$1
(я также пытался использовать '$1'
, \1
и '\1'
)
Это было просто для того, чтобы проверить, что я могу получить доступ к сопоставленной группе, и, кажется, я не могу, сопоставленная группа, как я полагаю, могла бы быть заменена литеральной строкой замены.
Итак, мой вопрос: возможно ли сопоставить определенную группу символов, в данном случае цифры в скобках, а затем вставить их в строку замены? Поэтому:
(01) title of file1.avi
(02) title of file2.avi
(03) title of file3.avi
становится:
01 title of file1.avi
02 title of file2.avi
03 title of file3.avi
К сожалению, кажется, что Вы не можете; и это это - неполная regex реализация в отказе.
Эта строка в конце весь переводы локали GPRename , кажется, делает это очевидным:
msgid "Backreferences with Regular expression cannot be use as $1 is considered a Perl variable."
, Так как Вы знакомы с регулярными выражениями Perl, я могу рекомендовать использовать превосходное rename
утилита командной строки вместо этого?
-n
переключатель сначала для получения предварительного просмотра. \((\d{2})\)
с группировкой в завершенных круглых скобках. Пример:
$ rename -n 's/\((\d{2})\)/$1/' *.avi (01) title of file1.avi renamed as 01 title of file1.avi (02) title of file2.avi renamed as 02 title of file2.avi (03) title of file3.avi renamed as 03 title of file3.avi
rename
с -v
(подробный) переключатель и отбрасывание -n
для фактического выполнения переименования. В GPRename можно использовать Регулярное выражение как это:
Name of file 012.txt
Regular Expression: Name of file (\d).txt
Replace: NewFileName_1.txt
Где:
1 = like $1
Можно попробовать его. Я использовал \1 или \1$, но это получает меня \или \$ как простой текст. Это странно, но это так.