Lot renommer des photos par date de création sur Mac OS X en utilisant Bash ne fonctionnant pas avec des espaces


1

Je cherchais une solution permettant de renommer par lots des photos 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 souhaite le faire. 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 car je renomme mes fichiers avec des espaces depuis 3 ans sous Windows). Et il se casse également si le fichier lui-même a 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, s'il vous plaît? Cela ne nécessite de préférence aucun logiciel supplémentaire (je veux juste pouvoir copier / coller ce script chaque fois que je change de machine).

Je vous remercie!

Réponses:


3

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 s'agir de guillemets doubles pour permettre la modification et l' $()expansion.


Pour une raison quelconque, cela supprime tout fichier contenant un espace. Je ne sais pas trop pourquoi.
Xtrimsky

Si vous ajoutez echodevant mv, vous pouvez voir quelles seront les commandes.
AFH

Vous avez besoin de guillemets autour $ide $(... $i). (Cela fonctionne, malgré les guillemets extérieurs.) Vous devez généralement mettre les guillemets doubles autour de toute substitution de variable, sauf si vous avez une raison spécifique de ne pas le faire.
Jpaugh

Oui, vous avez raison: j'ai supposé à tort que les citations extérieures couvraient les deux. J'ai mis à jour ma réponse. Mea culpa.
AFH

@xtrimsky - J'ai mis à jour ma réponse avec une série supplémentaire de citations, en réponse au commentaire de @ jphaugh. Désolé pour l'omission précédente - je testais sur Linux, mais les statoptions semblent être différentes et j'ai raté les guillemets intérieurs.
AFH

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.