Renommage séquentiel de fichiers

2

J'ai trouvé une réponse pour noms de fichiers numériques sans remplissage qui fonctionne bien pour renommer les noms de fichiers comme suit:

1.jpg > 00001.jpg
2.jpg > 00002.jpg
.
.
.
9.jpg > 00009.jpg

Cela utilise la commande suivante:

rename 's/\d+/sprintf("%05d", $&)/e' *.jpg

Mais mes noms de fichiers ne sont pas numériques. Ils sont une séquence alphanumérique, comme: a.jpg, b.jpg, c.jpg...... m.jpg .

D'une manière similaire à la question d'origine, je souhaite les renommer pour qu'ils s'affichent dans le bon ordre. Comment puis-je le faire?

    
posée رشاد خان 28.09.2015 - 13:49
la source

1 réponse

4

Vous pouvez également épingler des lettres, il vous suffit de modifier légèrement ma commande d'origine pour:

rename 's/\w+/sprintf("%05s", $&)/e' *.jpg

Nous disons simplement, remplacez le premier "mot" (chiffres et lettres) par une chaîne à zéro. C'est très similaire à l'original, c'est juste légèrement différent. Cette version fonctionne bien pour le problème initial.

Vous pouvez l'étendre en une correspondance .+ (à zéro pad tout ), mais vous devrez peut-être gérer l'extension en haut.

Test harnais:

$ mkdir test; cd test; touch {a..d}.jpg 1.jpg
$ rename 's/\w+/sprintf("%05s", $&)/e' *.jpg
$ ls
00001.jpg  0000a.jpg  0000b.jpg  0000c.jpg  0000d.jpg
    
réponse donnée Oli 28.09.2015 - 13:58
la source

Lire d'autres questions sur les étiquettes