1 votes

Renommer par lots des photos par date de création sur Mac OS X en utilisant Bash qui ne fonctionne pas avec les espaces

J'ai cherché une solution pour renommer des photos par lots sur Mac OS X. J'ai trouvé de nombreuses solutions mais la plupart d'entre elles ne fonctionnent pas si le fichier contient un espace ou si je veux mettre un espace dans le nom du fichier.

Par exemple, j'ai trouvé ce script :

for i in *.jpg; do newname=$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- $i); mv -- $i $newname.jpg; done

Le script fonctionne tant que je ne mets pas d'espace dans le nom de fichier final (je veux un espace dans le nom de fichier parce que je renomme mes fichiers avec des espaces depuis 3 ans sous Windows). Et cela ne fonctionne pas non plus si le fichier lui-même contient un espace. Donc si j'ai une photo appelée "Hello World.jpg", elle ne sera pas traitée.

Quelqu'un aurait-il une solution à ce problème, s'il vous plaît ? De préférence sans logiciel supplémentaire (je veux juste pouvoir copier/coller ce script à chaque fois que je change de machine).

Merci de votre attention !

3voto

AFH Points 16642

Vous devez utiliser des guillemets dans vos substitutions :

for i in *.jpg; do newname="$(stat -t %Y-%m-%d_%H.%M.%S -f %Sm -- "$i")"; mv -- "$i" "$newname.jpg"; done

Il doit être entre guillemets afin de permettre l'utilisation de variables et d'éléments d'information. $() l'expansion.

0voto

user138214 Points 31

Normalement, il suffirait de remplacer $i par "$i" .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X