Comment renommer des captures d’écran sous Linux –
De nombreux systèmes Linux de bureau enregistrent des captures d’écran avec des noms tels que Screenshot from 2020-11-29 18-57-51.png
. Souvent, vous aviez vraiment besoin de renommer les fichiers en quelque chose de plus évident comme webinar1.png
, webinar2.png
, etc. Heureusement, renommer un tas de fichiers est vraiment facile à faire sur la ligne de commande Linux.
Le shell Bash est très polyvalent et propose différentes manières d’évaluer les valeurs et d’étendre les variables. Une évaluation soignée est évaluation arithmétique. Pour effectuer cette évaluation, enveloppez votre instruction arithmétique avec $((
et ))
.
L’évaluation peut également inclure une expansion variable, comme $sum
à résoudre en une valeur. Mais pour plus de commodité, toutes les variables Bash répertoriées entre $((
et ))
sont développés automatiquement. Par exemple, pour incrémenter un nombre de variables de 1, vous pouvez taper:
count=$(( count + 1 ))
C’est la même chose que de taper:
count=$(( $count + 1 ))
L’expansion arithmétique prend en charge les mêmes opérateurs que dans d’autres langages de programmation, y compris +
et -
pour l’addition et la soustraction, *
et /
pour la multiplication et la division, et %
pour le reste. Vous pouvez aussi utiliser ++
et --
pour incrémenter et décrémenter une valeur dans une variable. Consultez la page de manuel pour Bash et faites défiler jusqu’à ÉVALUATION ARITHMÉTIQUE, pour la liste complète des opérateurs pris en charge et leur priorité.
Pour renommer toutes mes captures d’écran, j’avais besoin d’écrire cette commande Bash en une ligne:
n=1; for f in Screenshot*.png; do mv -v "$f" webinar$n.png; n=$(( n + 1 )); done
Mais qu’est-ce que cela fait?
La première partie de la commande, n=1
, initialise la variable n
à 1.
Ensuite, j’utilise un for
boucle pour opérer sur tous les fichiers commençant par Screenshot
et terminer avec le .png
extension. Ce sont généralement toutes les captures d’écran que j’ai prises lors de mon dernier webinaire. Si j’avais besoin d’être plus précis, je pourrais inclure la date dans cette spécification de fichier, telle que Screenshot from 2020-11-29*.png
. Les barres obliques inverses sont des échappements littéraux pour conserver les espaces dans le nom de fichier.
Chaque itération de la boucle for stocke un nom de fichier dans la variable f. Alors le mv
commander mv -v "$f" webinar$n.png
renomme chaque fichier avec mes noms de fichiers préférés comme webinar1.png
, webinar2.png
, etc. J’ai besoin de citations autour du $f
expansion variable de sorte que les espaces Screenshot from YYYY-MM-DD hh-mm-ss.png
ne pose pas de problèmes dans mon mv
commander. Si vous obtenez une erreur comme mv: target 'webinar1.png' is not a directory
, vous n’avez probablement pas mis de guillemets autour du $f
.
Enfin, j’incrémente la valeur dans le n
variable afin qu’il soit prêt pour la prochaine itération de la boucle. L’expansion arithmétique n=$(( n + 1 ))
incrémente le n
variable par 1.