Переместите 10 чисел цифры в начало имени файла

У меня есть тысячи файлов, которые я должен переименовать. Они все содержат 10 чисел цифры, с которых все начинают '42469'. Я должен переместить эти 10 цифр в каждый из файлов к началу имени файла и добавить подчеркивание. Пример:

Original - HOLZHEAUSER GAS UNIT_ 2_4246932863_2.pdf
Result -   4246932863_HOLZHEAUSER GAS UNIT_2_2.PDF

Кто-либо может помочь мне с этим?Заранее спасибо!

Я не настоящий опытный пользователь/программист сценария, таким образом, мой выбор состоял бы в том, чтобы смочь сделать это в Powershell. Я попробовал эти два предложения в Powershell без любой удачи.

1
задан 2 March 2020 в 17:20

3 ответа

Используя mmv для переименования файлов с подстановочным знаком, соответствующим:

$ touch 'HOLZHEAUSER GAS UNIT_ 2_4246932863_2.pdf'
$ mmv '*_ ?_*_?.*' '#3_#1_#2_#4.#u5'
$ ls
'4246932863_HOLZHEAUSER GAS UNIT_2_2.PDF'
2
ответ дан 17 March 2020 в 00:14

Можно использовать жемчуг 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 выполнять операцию только если Ваше довольное результатом.

0
ответ дан 17 March 2020 в 00:14

Можно также сделать это с sed. Эта команда должна точно сделать то, что Вы хотите:

ls | sed -r 's/(.*) 2_(42469)([0-9]+)_2(.*)/"&" "\2\3_\12_2\4"/' | xargs -L1 mv -v
-1
ответ дан 17 March 2020 в 00:14

Другие вопросы по тегам:

Похожие вопросы: