У меня есть тысячи файлов, которые я должен переименовать. Они все содержат 10 чисел цифры, с которых все начинают '42469'. Я должен переместить эти 10 цифр в каждый из файлов к началу имени файла и добавить подчеркивание. Пример:
Original - HOLZHEAUSER GAS UNIT_ 2_4246932863_2.pdf
Result - 4246932863_HOLZHEAUSER GAS UNIT_2_2.PDF
Кто-либо может помочь мне с этим?Заранее спасибо!
Я не настоящий опытный пользователь/программист сценария, таким образом, мой выбор состоял бы в том, чтобы смочь сделать это в Powershell. Я попробовал эти два предложения в Powershell без любой удачи.
Используя mmv для переименования файлов с подстановочным знаком, соответствующим:
$ touch 'HOLZHEAUSER GAS UNIT_ 2_4246932863_2.pdf'
$ mmv '*_ ?_*_?.*' '#3_#1_#2_#4.#u5'
$ ls
'4246932863_HOLZHEAUSER GAS UNIT_2_2.PDF'
Можно использовать жемчуг rename
инструмент:
rename -n 's/(.*?)(\d{10}_)(.*?)/$2$1$3/' *
s/pattern/replacement/
замена средств текста, который соответствует шаблону данной замене. Текст, который соответствует шаблонам в скобках, сохранен и может быть backreferenced в желаемом порядке в замещающей строке с $1
, $2
и $3
соответственно.
Примечание,
-n
средства:No action: print names of files to be renamed, but don't rename.
Удалите-n
выполнять операцию только если Ваше довольное результатом.
Можно также сделать это с sed
. Эта команда должна точно сделать то, что Вы хотите:
ls | sed -r 's/(.*) 2_(42469)([0-9]+)_2(.*)/"&" "\2\3_\12_2\4"/' | xargs -L1 mv -v