bash, файлы, переименование файлов, положения переключателей

Как переименовать

sluno-20201027-call-metroua-status.mp4
sluno-20201103-call-deriva.mp4
sluno-20201103-call-metroua-status.mp4
sluno-20201105-call-makrocz.mp4
sluno-20201105-call-metroua-testcall.mp4
sluno-20201105-call-sluno-ggtabak.mp4
sluno-20201110-call-makrocz.mp4
sluno-20201110-call-metroua-status.mp4
sluno-20201110-call-sluno-utccz.mp4

в

sluno-call-metroua-status-20201027.mp4
sluno-call-deriva-20201103.mp4
sluno-call-metroua-status-20201103.mp4
sluno-call-makrocz-20201105.mp4
...

Просто переместите дату / строку на позицию 7-14 до конца имени файла.

Спасибо.

3
задан 22 December 2020 в 16:38

3 ответа

mmv хорошо работает для несложного переименования файла .

mmv '*-*-*-*.mp4' '#1-#3-#4-#2.mp4'

Также может быть полезно иметь еще несколько ориентиров, чтобы не менять имя на что-то другое, особенно там, где в том же каталоге могут быть другие файлы.

mmv 'sluno-[0-9]*-call-[a-z]*.mp4' 'sluno-call-#3#4-#1#2.mp4'
             ^  ^        ^  ^
             1  2        3  4

sluno-20201027-call-metroua-status.mp4
      ^-------      ^-------------
      1   2         3       4

Если бы я делал это с минимальным количеством, mv и bash , я бы использовал цикл for и bash встроенное сопоставление BRE.

for i in *.mp4; do \
    [[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \
    mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
7
ответ дан 3 January 2021 в 22:45

Другой вариант:

$ qmv {шаблон}

поместит 2 столбца с именами файлов в выбранный вами редактор.

Измените правый столбец, чтобы указать нужные имена файлов.

В левом столбце указано исходное имя. Начальный столбец правой группы не может быть изменен, поэтому автоматический перенос может помешать.

В руках эксперта с каждым редактором это может быть безумно быстрым, особенно для столбцов vim и визуальных режимов.

] Обычно я использую переименование, но для сложных задач хорошо видеть точные имена в редакторе.

0
ответ дан 3 January 2021 в 22:45

Используйте переименовать :

rename -n 's/^(.*?)-(.*?)-(.*?)(\.mp4)$/$1-$3-$2$4/' *.mp4

Удалите -n , если результат вас устраивает.

Для объяснения, посетите this .

4
ответ дан 3 January 2021 в 22:45

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

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