bash, файлы, переименование файлов, переключение позиций

Dec 22 2020

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

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в конец имени файла.

Благодарю.

Ответы

7 bac0n Dec 22 2020 at 22:04

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я бы с для петли и bashвстроенной BRE соответствия.

for i in *.mp4; do \
    [[ $i =~ ^sluno-(.*)-call-(.*).mp4 ]] && \ mv -- "$i" "sluno-call-${BASH_REMATCH[2]}-${BASH_REMATCH[1]}.mp4"; \
done
4 pLumo Dec 22 2020 at 20:46

Использование rename:

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

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

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

JohnP Dec 30 2020 at 01:47

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

$ qmv {шаблон}

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

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

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

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

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