Création de dossiers automatiques

Xavb22

Membre junior
5 Novembre 2009
10
0
Bretagne
Bonjour à tous

Je voudrais savoir si l'un/l'une d'entre vous pourrait me donner la démarche pour automatisé la création de dossiers.

Je m'explique. J'ai mes dossiers photos classés par date (20170501-titre)

Dans ce dossier je souhaite pouvoir créer automatiquement
Le dossier--> originales
Le dossier--> travaillées
Le dossier --> internet
Le dossier --> sélectionnées

En fait c'est 4 dossiers seront systématiquement présent dans TOUS mes dossiers contenant mes photos classés.

Donc je souhaite une manipulation très simple afin d'automatiser cette tâche

J'espère que je suis clair et que vous pourrez répondre à cette demande.

Merci

Xavier
 

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 894
3 141
Si je comprends bien, tu as, dans un dossier donné, des sous-dossiers dont le nom a la forme "YYYYMMDD - Titre".
Dans chacun de ces sous-dossiers se trouvent des photos et tu voudrais créer pour chacun de ces sous-dossiers quatre sous-dossiers ("originales", "travaillées", "Internet", "sélectionnées") et (je suppose) déplacer les photos dans le sous-dossier "originales".

C'est ça ?
 

Xavb22

Membre junior
5 Novembre 2009
10
0
Bretagne
Salut bompi merci d'avoir pris le temps de me répondre.

En fait voici une copie écran pour mieux expliquer ma demande

684586Capturedecran20170502a112221.png


En fait je voudrais que dans chaque dossier, sur une année j'ai environ 1000 dossiers, en une seule manipulation il soit créé les sous-dossiers et que dans le sous-dossier originales les RAW soient transférés.

Dans l'exemple :

Le dossier 20170502-FORUM est créé à l'ancienne. Dans ce dossier il y a XXX images avec comme extension .CR2

Avec le script ou autres je voudrais automatiser ce que je fais aujourd'hui mano à mano pour chaque dossier, la création des sous-dossiers et que dans le sous-dossier originales soient transférés les .CR2.

C'est pas très clair hein ?

Merci
 
Dernière édition par un modérateur:

Locke

What am I doing here?
Modérateur
Club MacG
20 Juillet 2011
32 922
3 675
@Xavb22
J'ai modifié pour toi, mais lorsque tu réponds, pour insérer une photo fais un clic sur Transférer un fichier. Ce sera plus simple puisque l'on peut insérer une photo depuis son Mac. ;)
 

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 894
3 141
Bien. Mon Mac est éteint donc j'ai fait ça sous Linux (je vais le tester sur mon MBP après).

a) j'ai créé un petit script qui permet, pour un dossier passé en paramètre, d'y créer les sous-dossiers "originales", "internet" etc. et d'en déplacer les fichiers avec l'extension CR2 dans son nouveau sous-dossier "originales".

b) ensuite j'ai concocté une commande find qui permet de rechercher les dossiers "YYYYMMDD-*" et d'appliquer le script à chacun des dossiers trouvés.
 

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 894
3 141
a) le script :
#!/bin/bash

function fMD () {
[ ! -d "$1" ] && /bin/mkdir "$1"
}

if (( $# == 0 )) ; then
echo "Passer un dossier en parametre"
exit 1
fi

cd $1

# On cree les sous-dossiers
fMD "imprimables"
fMD "internet"
fMD "originales"
fMD "selectionnees"
fMD "travaillees"

# S'il existe des fichiers CR2, on les deplace dans le sous-dossier
# "originales"
export j=$(find . -maxdepth 1 -type f -name "*.CR2" | wc -l)
if (( j > 0 )) ; then
mv *.CR2 "originales/"
fi
Le plus simple est
  • de créer (éventuellement) le dossier "/usr/local/bin"
    sudo mkdir -p "/usr/local/bin"
    si le dossier existe, la commande râlera mais ce n'est pas grave
  • d'enregistrer le script ci-dessus dans un fichier ; je l'ai appelé "createPictDir.sh"
  • de recopier ce fichier dans "/usr/local/bin"
  • de lui donner les attributs suffisants pour l'exécuter :
    sudo chmod a+x "/usr/local/bin/createPictDir.sh"
Ce script prend en paramètre le nom d'un dossier et va créer, s'ils n'existent pas, les sous-dossiers que tu souhaites, puis copier les fichiers CR2 (raw Canon ?) dans le sous-dossier "originales"
 
Dernière édition:

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 894
3 141
b) La commande :

Bloc de code:
find . -type d -regex ".*/[0-9]\{8\}-[^/]*" -print  -exec /usr/local/bin/createPictDir.sh {} \;
Cette commande va :
  • à partir de l'endroit où tu te trouves (le point)
  • rechercher les dossiers (-type d)
  • dont le nom commence par 8 chiffres, suivis d'un tiret puis de caractères quelconques (-regex ".*/[0-9]\{8\}-[^/]*")
  • et, pour chaque dossier trouvé, va afficher son nom (-print)
    et appliquer le script précédent
    (-exec /usr/local/bin/createPictDir.sh {} \;)
 
Dernière édition:

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 894
3 141
Tu l'auras compris, tout ça ce fait dans un onglet quelconque de Terminal.
Pour te déplacer dans le bon dossier de départ, tu utilises la commande cd.

Cependant, tu peux parfaitement utiliser Automator pour rechercher les dossiers qui t'intéressent et, pour chacun lui appliquer le script, car Automator a un objet pour exécuter les commandes et scripts en mode texte.

Idem avec AppleScript.
 

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 894
3 141
Je viens de tester (et faire une légère modification à la commande) sur mon MBP et cela me semble fonctionner comme attendu [le MBP est toujours sur Yosemite].
 

bompi

El Moderador
Modérateur
Club MacG
12 Février 2004
41 894
3 141
Screen Shot 2017-05-02 at 14.51.11 .png
Je viens de faire un essai avec Automator pour éviter d'avoir à ouvrir Terminal à chaque fois.
C'est assez simple à réaliser.
Il faut simplement faire attention à transmettre au script le dossier sélectionné sous forme d'arguments (Pass input : as arguments)
 

Locke

What am I doing here?
Modérateur
Club MacG
20 Juillet 2011
32 922
3 675
Merci désolé, je ferai attention la prochaine fois
Il n'y aucun problème, mais c'est surtout pour toi pour te faciliter la vie, car mettre un lien entre des balises ne facilite pas la tâche pour la voir.