web-dev-qa-db-fra.com

Renommer plusieurs fichiers avec Bash

J'ai beaucoup de fichiers à traiter et je dois remplacer leurs noms d'origine par ce format en bash:

00000000000001_1.jpg 
00000000000002_1.jpg
00000000000003_1.jpg

etc

1
deXterlab97

Adapté de ne des réponses d'Oli :

rename -n 's/.+/our $i; $i++; sprintf("%014d_1.jpg", $i)/e' *

Cela prend chaque fichier dans le répertoire courant et le renomme avec un nombre avec 14 chiffres (j'espère avoir compté correctement) suivis de _1.jpg. our $i introduit une variable globale i, qui est ensuite augmentée d'une unité et imprimée avec sprintf. e commandes rename pour évaluer le côté droit du remplacement (= tout entre le deuxième et le troisième /) comme expression plutôt que littéralement. Si vous êtes satisfait des résultats, supprimez -n pour effectuer le changement de nom.

Si vous voulez plonger dans les expressions Perl et leur beauté, le perldoc est le chemin à parcourir.

4
dessert

Est-ce que cela fonctionnerait pour vous:

i=1
for file in *; do
    mv "$file" "$(printf %014d $i)_1.jpg"
    i=$((i+1))
done

Il renommera chaque fichier du répertoire actuel comme ceci:

00000000000001_1.jpg
.
.
00000000000009_1.jpg
.
.
00000000000010_1.jpg
.
.
2
Paul