bash, fichiers, renommer les fichiers, changer de position

Dec 22 2020

Comment renommer

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
...

Déplacez simplement la date / chaîne sur la position 7-14à la fin du nom du fichier.

Merci.

Réponses

7 bac0n Dec 22 2020 at 22:04

mmv fonctionne bien pour le changement de nom de fichier simple .

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

Il peut également être utile d'avoir quelques points de référence supplémentaires pour être sûr de ne pas changer le nom sur autre chose, en particulier là où il peut y avoir d'autres fichiers dans le même répertoire.

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

Si je devais le faire avec le strict minimum, mvet bashj'irais avec une boucle bashfor et une correspondance BRE intégrée.

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

Utilisez rename:

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

Supprimez le -nsi vous êtes satisfait de la sortie.

Pour une explication, visitez ceci .

JohnP Dec 30 2020 at 01:47

Une autre option:

$ qmv {modèle}

déposera 2 colonnes de noms de fichiers dans l'éditeur de votre choix.

Modifiez la colonne de droite pour avoir les noms de fichiers souhaités.

La colonne de gauche est le nom d'origine. La colonne de début du bon groupe ne peut pas être modifiée, donc l'auto-wrap peut vous gêner.

Entre les mains d'un expert avec chaque éditeur, cela peut être très rapide, en particulier pour la colonne vim et les modes visuels.

En général, j'utilise renommer, mais pour des besoins complexes, voir les noms exacts dans l'éditeur est bien.