173 votes

Renommer plusieurs fichiers en remplaçant un motif particulier dans les noms de fichiers en utilisant un script shell.

Ecrivez un simple script qui renommera automatiquement un certain nombre de fichiers. Par exemple, nous voulons que le fichier *001.jpg soit renommé en chaîne de caractères définie par l'utilisateur + 001.jpg (ex : MyVacation20110725_001.jpg). L'utilisation de ce script est d'obtenir que les photos de l'appareil photo numérique aient des noms de fichiers qui ont un certain sens.

Je dois écrire un shell script pour cela. Quelqu'un peut-il me suggérer comment commencer ?

0 votes

Je suggère de lire les pages de manuel pour mv

0 votes

0 votes

4voto

Victor H Points 69

Une autre option est :

for i in *001.jpg
do
  echo "mv $i yourstring${i#*001.jpg}"
done

supprimer echo après que vous l'ayez bien fait.

Substitution de paramètres avec # ne gardera que la dernière partie, vous pouvez donc changer son nom.

2voto

bentael Points 409

Je ne peux pas commenter la réponse de Susam Pal, mais si vous avez affaire à des espaces, je les entourerais de guillemets :

for f in *.jpg; do mv "$f" "`echo $f | sed s/\ /\-/g`"; done;

1voto

suvayu Points 912

Vous pouvez essayer ceci :

for file in *.jpg;
do
  mv $file $somestring_${file:((-7))}
done

Vous pouvez voir "l'expansion des paramètres" dans man bash pour mieux comprendre ce qui précède.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X