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?

w4etwetewtwet
la source
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
Grawity
la source
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