переименование нескольких последовательных расширений файлов - PullRequest
0 голосов
/ 28 июня 2019

У меня есть несколько последовательных имен файлов в одном каталоге с несколькими инкрементными расширениями файлов.Моя цель - использовать команду переименования, чтобы переименовать только расширение файла.

IBM0020.DAT_001
IBM0020.DAT_002
IBM0020.DAT_003
IBM0021.DAT_001
IBM0021.DAT_002
IBM0022.DAT_001
IBM0022.DAT_002
IBM0022.DAT_003
IBM0022.DAT_004
...

до

IBM0020.DAT_001
IBM0020.DAT_002
IBM0020.DAT_003    
IBM0021.DAT_004
IBM0021.DAT_005
IBM0022.DAT_006
IBM0022.DAT_007
IBM0022.DAT_008
IBM0022.DAT_009
...

Я пробовал запустить команду ниже, но не ожидаемый результат.Я хочу сохранить имя файла и переименовывать / изменять только расширение с порядковым номером.

rename -n 's/.+/our $i;sprintf(".DAT_%03d",1+$i++)/e' *
IBM0020.DAT_001 renamed as .DAT_001
IBM0020.DAT_002 renamed as .DAT_002
IBM0020.DAT_003 renamed as .DAT_003
IBM0021.DAT_001 renamed as .DAT_004
IBM0021.DAT_002 renamed as .DAT_005
IBM0022.DAT_001 renamed as .DAT_006
IBM0022.DAT_002 renamed as .DAT_007
IBM0022.DAT_003 renamed as .DAT_008
IBM0022.DAT_004 renamed as .DAT_009

Спасибо за любую помощь.

1 Ответ

1 голос
/ 28 июня 2019

Если исходить из комментария, если все ваши файлы имеют .DAT_XXX как расширение, которое вы хотите переименовать последовательно, то нет необходимости включать ".DAT_" в качестве части шаблона, который вы подходите. Просто сопоставьте 3 цифры в конце имени файла и измените их, например,

rename 's/\d{3}$/our $i; sprintf("%03d", 1+$i++)/e' *

Если ".DAT_" не уникален, и у вас есть другие расширения, заканчивающиеся 3-значными цифрами, которые вы хотите избежать переименования, тогда вы можете включить "DAT_" как часть сопоставленного и замененного шаблона, например,

rename -n 's/DAT_\d{3}/our $i; sprintf("DAT_%03d", 1+$i++)/e' *

( примечание: есть две разные утилиты "rename", широко используемые в Linux, первая, предоставляемая как часть пакета util-linux, не поддерживает переименование regex, а затем perl-rename , который у вас есть, который поддерживает переименование perl-regex.)

...