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