Copier certains fichiers avec une arborescence depuis le repertoire courant

Bonjour à tous,
J’ai un serveur de fichier avec des photos. Je souhaiterais remettre toutes les photos prises en 2012 dans un dossier à graver. Même chose pour 2013. Etc…
Jusque la, facile…
Je complique un peu. Les photos ont été prise par des gens différents, et mise dans un dossier à leur nom et parfois une description de la raison des photos.

Exemple:
./Amelie/Ce que j’aime les belles fleurs/Celles ci sont trop belles/Photo1.jpg & Photo2.jpg & … (Prise en 2014)
./Amelie/Ce que j’aime les belles fleurs/Celles ci sont moins belles/Photo1.jpg & Photo2.jpg & … (Prise en 2012)
./Patrick/Jolie maison rouge/photo1.JPG & photo2.jpg & photo3.jpg (Toutes prises en 2012)
./Patrick/Jolie maison Bleue/photo1.jpg & photo2.jpg … (Toutes prises en 2015)

Et je voudrais avoir:
~/A graver/2012/Amelie/Ce que j’aime les belles fleurs/Celles ci sont moins belles/Photo1.jpg & Photo2.jpg & …
~/A graver/2012/Patrick/Jolie maison rouge/photo1.JPG & photo2.jpg & photo3.jpg
~/A graver/2014/Amelie/Ce que j’aime les belles fleurs/Celles ci sont trop belles/Photo1.jpg & Photo2.jpg & …
~/A graver/2015/Patrick/Jolie maison Bleue/photo1.jpg & photo2.jpg …

J’ai une jolie commande “find” qui me récupère les fichiers sur mes critères. Ca, ca va. C’est lors de la copie que ca rate. Je n’arrive que a copie le fichier dans le dossiers.

En gros, j’obtiens:
~/A graver/2012/Photo1.jpg & Photo2.jpg & … photo1.JPG & photo2.jpg & photo3.jpg

Quelqu’un à une piste?

Merci de votre aide.

salut,

super !
tu partages ? ça nous éviterait d’avoir à réinventer la roue.

Allez… C’est bien parce que c’est vous…

find . (-iname ‘jpg’ -o -iname ‘jpeg’ ) -mtime +10 -a -mtime 20 -exec cp “{}” ~/A graver/2012 ;

D’ac, je joue sur le nombre de jours mais je ne suis pas contre une idée pour améliorer ça aussi.
:sweat_smile:

find . (-iname 'jpg' -o -iname 'jpeg' ) -mtime +10 -a -mtime 20 -printf '%H %P' \
   | while read -d '' srcDir path2file
     do
        destDir=~/Agraver"/${path2file%/*}"
        test -d "$destDir" || echo mkdir -p "${path2file%/*}"
        echo cp "$srcDir/$path2file" "$destDir/"
     done

???

Merci beaucoup Watael.
Mon week-end fut assez chargé, je regarde ca pendant la journée.
A+

Un tout grand merci mais j’ai trouvé plus facile.

find . (-iname ‘jpg’ -o -iname ‘jpeg’ ) -mtime +10 -a -mtime -20 -exec cp –parents “{}” Avant_2012 ;

Ou l’option “–parents” préserve les répertoires.

2 J'aime

trop utile : comment ne pas l’avoir vue avant !?!