# automator - deplacement de fichiers dans des sous-dossiers



## yomope (1 Septembre 2010)

bonjours je me penche depuis quelques jours sur la question automator/applescript pour me simplifier la vie et je ne trouve pas de réponse a mon problèmes.
j ai un dossier avec bon nombres de jpeg dont le nom est normaliser
xxxxxxxx-yy.jpeg  (xxxxxxxx est la référence et yy le numéro de la photo)

je voudrais que les toutes les photos avec la même référence soit déplacée dans un sous dossier du nom de la ref.
grosso modo passer de ca

```
nomdebase/12236572-01.jpeg
nomdebase/12236572-02.jpeg
nomdebase/12236572-03.jpeg
nomdebase/24578135-01.jpeg
nomdebase/24578135-02.jpeg
nomdebase/24578135-03.jpeg
&#8230;
```
a ca

```
nomdebase/12236572/12236572-01.jpeg
nomdebase/12236572/12236572-02.jpeg
nomdebase/12236572/12236572-03.jpeg
nomdebase/24578135/24578135-01.jpeg
nomdebase/24578135/24578135-02.jpeg
nomdebase/24578135/24578135-03.jpeg
 &#8230;
```
je sais pas si j'ai etait clair :rateau:
bref si qqun a une solution toutes pretes ou une solution qui me permette d'apprendre
qu il n hesite pas a laisser un message

merci


----------



## Anonyme (1 Septembre 2010)

Bonjour,

Dans Automator ajoute l'action "*Éxecuter un script shell*".

Dans cette action :
Sélectionne */bin/bash* dans le popup "Shell", sélectionne "*comme arguments*" dans le popup "Données en entrée"
Copie et colle ce code dans l'action

```
for dossier in "$@"
do
   cd "$dossier" && for each in *.jpg; do
      if [ "$each" != "*.jpg" ]; then
         refer=${each%-*}
         /bin/mkdir -p "$refer" && /bin/mv -f "$each" "$refer/"
      fi
   done
done
```
Enregistre-le en application
Après glisse et dépose le(s) dossier(s) sur l'icône de l'application.

Si vous déposez un ou des fichiers, le script ne fera rien.
Si vous déposez un dossier qui ne contient aucun JPEG ,  le script ne fera rien.
Si le nom du fichier .jpg ne contient pas de - (le signe -), le script ne le déplacera pas


----------



## yomope (1 Septembre 2010)

wow merci!je vais utiliser ca pour l instant je ne savais pas qu'on pouvait scripter ce genre de commande :O.
par contre j'ai continuer de chercher pendant une bonne partie de l apres midi et j en suis arriver  a ceci

```
on SnipText(Txt, Long) --debut de sniptext
    return (text 1 thru Long of Txt)
end SnipText -- fin de snip text

tell application "Finder"
    
    set chaine_alias to choose file with prompt "choisissez un photos"
    set nom_fichier to name of chaine_alias -- on recupere le nom de fichier
    
end tell
set reference_v to SnipText(nom_fichier, 8) --on recupere la reference
display dialog reference_v
```
j ai donc reussi a recuperer les 8 premiers caracteres 
bon je precise que si j en retire autant de gloire c'est que ceci est mon premier script.(enfin a vrais dire c'est surtout de la copie et de la modif de bout de script.)
je pense que je vais continuer mon script histoire de me former.
puis je poster mon code ici pour correction?
encore merci.


----------



## Anonyme (1 Septembre 2010)

Bonjour,



yomope a dit:


> par contre j'ai continuer de chercher pendant une bonne partie de l apres midi et j en suis arriver  a ceci
> 
> puis je poster mon code ici pour correction?
> encore merci.


Oui, c'est sans problème


----------

