Déplacer des nombres dans un nom de fichier au début


0

J'ai plusieurs fichiers dans un dossier, avec des noms sous la forme: numéro SOMETEXT1, numéro SOMETEXT2.mp3, ou numéro SOMETEXT.mp3. Je souhaite renommer ces éléments avec le numéro SOMETEXT SOMETEXT2.mp3 ou le numéro SOMETEXT.mp3. En utilisant des outils de ligne de commande bash et GNU communs, comment pourrais-je y parvenir?


2
Pourriez-vous fournir un exemple de nom de fichier réel pour chaque variante que vous avez?
Daniel Beck

Réponses:


1

Utilisation perl-rename(parfois appelée prename):

prename -v 's/^(.+) (\d+)( .+|\.[^.]+)$/\2 \1\3/' *

Utilisez -nsimplement pour tester sans renommer.

La même chose avec bash:

re='^(.+) ([0-9]+)( .+|\.[^.]+)$'
for file in *; do
    new=$file
    if [[ "$file" =~ $re ]]; then
        new="${BASH_REMATCH[2]} ${BASH_REMATCH[1]}${BASH_REMATCH[3]}"
    fi
    if [[ "$new" != "$file" ]]; then
        mv -v "$file" "$new"
    fi
done

Cela fonctionne pour la première variété de noms, (numéro de texte text.mp3), mais pas la seconde (numéro de texte.mp3), comment puis-je résoudre ce problème? Merci beaucoup pour votre aide.
w4etwetewtwet

Ah, j'ai oublié l'extension. Fixé.
grawity

Fonctionne parfaitement, merci beaucoup.
w4etwetewtwet
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.