Renommer un lot de lucios sous Ryzom

Ryzom enregistre les screenshots pris en jeu d'une façon très simple : screenshotX.tga (si vous avez choisi l'option tga, qui est la meilleure qualité). Le X, c'est un chiffre, qui s'incrémente à chaque fois dans le dossier. Problème si vous avez plusieurs ordis, ou que vous vider les dossiers dans d'autres : vous vous retrouver avec plusieurs screenshot001.tga.

Un petit script pour améliorer ça :

#!/bin/sh
racine=`pwd`;
for dossier in $(find -type d); do
cd $dossier;
    for name in $(find screenshot*); do
            newname="$(date -r $name +%y-%m-%d)_$(date +%H%M%S)_$(echo $name|sed "s/screenshot//")";
            mv $name $newname;
    done
    cd $racine;
done

Enregistrer ça dans un fichier nommé renom.sh (par exemple), executable. Il suffit ensuite de se mettre dans le repertoire et de faire

sh ./renom.sh

Oui oui, vous savez, mais moi j'oublie même ça :D

Pour détailler un peu :

for name in $(find screenshot*); do

permet de ne sélectionner que les fichiers commençant par “screenshot” (utile pour ne pas renommer dossiers, scripts, etc…)

date -r $name +%y-%m-%d

Va extraire la date de dernière modification du fichier. Sur les screenshots, c'est la date de création. Pratique. La date est formaté année-mois-jour.

$(date +%H%M%S)

C'est une sécurité qui est sans doute en trop, pour éviter d'avoir des renames semblables. Si le même jour, vous avez videz votre dossier screenshot (ou si vous avez deux clients), vous avez potentiellement deux screenshot0001.tga. Avec l'heure en seconde de l'execution du script, on a un chiffre qui différencie les deux, donc pas de risque d'écrasement.

$(echo $name|sed "s/screenshot//")"

on enlève le motif “screenshot” dans le nom :D (le nom est déjà assez long, même si très identifiable)

mv $name $newname

Va appliquer le renommage. Si vous avez peur des bêtises, vous pouvez faire plutot la commande

cp $name ./rangement/$newname

ce qui copiera les fichiers renommés dans le dossier rangement, en laissant les originaux dans le dossier de base. Mais pensez à créer un dossier “rangement” avant sinon ça va râler :)

Et il y a une boucle pour que ça fonctionne de façon récursive. Par contre ça bloque si les dossiers ont des espaces dans leur nom. La solution simple ? Renommer sans espace grâce à ce script créé par Yannk.

Merci à Glorf qui m'a aidé à écrire ça !