cFlavien Posté(e) le 20 avril 2016 Partager Posté(e) le 20 avril 2016 Bonjour a tous. J'ai un DS215j, je voudrais faire un script pour déplacer des fichier qui s’exécuterait tous les jours. Je voudrais pouvoir déplacer les fichier en fonction de leur nom. exemple: Si extension est ".jpg ou .png" et nom du fichier contient "toto" alors déplacer vers "volume1/photos/toto/" Et à la fin supprimer les dossiers vides en ignorant thumb.db, *.lnk et *.url Pouvez me dire si c'est possible et comment faire ? Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Einsteinium Posté(e) le 21 avril 2016 Partager Posté(e) le 21 avril 2016 (modifié) Oui c'est possible, le tout en fessant un peu de recherche à défaut de le faire soit même ;-) Modifié le 21 avril 2016 par Einsteinium 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cFlavien Posté(e) le 22 avril 2016 Auteur Partager Posté(e) le 22 avril 2016 Si je viens demander conseil c'est que j'ai pas forcement trouver ce que je voulais. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 22 avril 2016 Partager Posté(e) le 22 avril 2016 (modifié) @cFlavien l'inconvénient est que tu ne donne pas assez de détails sur ce que tu veux faire (et surtout j'espère que la demande n'est pas ici pour réaliser un devoir à rendre à l'école) En essayant d'interpréter, ca devrait ressembler à ceci (tu as de la chance que j'avais un peu de temps à perdre): #!/bin/bash PATH=/bin:/usr/bin cd /tmp # par sécurité cleanup="" while getopts :c OPT; do case $OPT in c|+c) cleanup=yes ;; *) echo >&2 "usage: ${0##*/} [+-c} [--] ARGS..." exit 2 esac done shift $(( OPTIND - 1 )) OPTIND=1 src_dir="$1" shift target_dir="$1" shift findargs=("-type" "f" "(") for ext in $* do findargs+=( "-name" "*.$ext" "-o" ) done findargs+=('-false' ')') if cd "$src_dir" ; then find . "${findargs[@]}" -print0 | xargs -0 --no-run-if-empty mv -v -t "$target_dir" else echo >&2 "répertoire \"$src_dir\" non trouvé" exit 1 fi case $cleanup in y*) echo "Nettoyage de $src_dir" >&2 find "$src_dir" -iname "thumb.db" -o -name "*.lnk" -o -name "*.url" -delete find "$src_dir" -depth -type d -empty -delete ;; esac DSM6 minimum requis (pour le bash notamment). j'ai mis le nettoyage optionnel (avec le switch "-c") même si les fichiers sont dans des sous dossiers au départ, ils vont tous se retrouver "à plat" dans le répertoire d'arrivée. la demande "supprimer les dossiers vides en ignorant thumb.db, *.lnk et *.url" est moins triviale à réaliser, j'ai fait plus bourrin (suppression de tous les fichiers de ce type) pas testé de façon exhaustive, script à exécuter à tes risques et périls invoquer le script comme ceci: moveto [-c] <rep_source> <rep_cible> <extension> [<extension>...] exemple: moveto -c /volume1/IN /volume1/photos/toto jpg png Faudrait normalement delancer une indexation des dossiers cibles et surce (cf commande "synoindex", je te le laisse à titre d'exercice) Modifié le 22 avril 2016 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cFlavien Posté(e) le 26 avril 2016 Auteur Partager Posté(e) le 26 avril 2016 (modifié) Bonjour, Merci j'ai tester le script, ça marche bien comme je vendrais. Je pense que en le modifiant je pourrait avoir ce que je veut. Et effectivement je n'ai peut être pas été très clair. Plutôt qu'un long discours voici un exemple de script que j'ai essayer entre temps sur windows (qui je comprend un peut mieux que dans le langage linux / syno !) (Mon script ne marche pas bien car il ne gère pas la ligne avec une étoile "\Photos\*\*p7700*.jpg" pour rechercher dans tous les sous dossiers) :: DEPLACEMENT DES FICHIERS set download=\\FLAVIEN_DS\volume1\homes\Flavien\Download set public=\\FLAVIEN_DS\volume1\public set photo=\\FLAVIEN_DS\volume1\photo set podcast=\\FLAVIEN_DS\volume1\music\Podcast set video=\\FLAVIEN_DS\volume1\video ::############# PHOTO ############# move "%download%\*.jpg" "%photo%\A_TRIER" move "%download%\*.png" "%photo%\A_TRIER" copy "%public%\Photos\*p7700*.jpg" "%photo%\FlickrSync\" copy "%public%\Photos\*\*p7700*.jpg" "%photo%\FlickrSync\" move "%public%\Photos\*2014*.jpg" "%photo%\2014\" move "%public%\Photos\*2015*.jpg" "%photo%\2015\" move "%public%\Photos\*2016*.jpg" "%photo%\2016\" ::################################### ::############# PODCAST ############# set pod=ADC set pod_dossier=Apero du Captain move "%download%\*%pod%*.mp3" "%podcast%\%pod_dossier%\" set pod=wapx set pod_dossier=Wapx move "%download%\*%pod%*.mp3" "%podcast%\%pod_dossier%\" set pod=LeGrosBoeuf set pod_dossier=Le Gros Boeuf move "%download%\*%pod%*.mp3" "%podcast%\%pod_dossier%\" ::################################### ::############# VIDEO ############# move "%download%\*.mkv" "%video%" move "%download%\*.mp4" "%video%\" move "%download%\*\*.mkv" "%video%\" move "%download%\*\*.mp4" "%video%\" ::################################### pause L'idée est aussi de pouvoir facilement ajouter des ligne au besoin. ps: non non ce n'est pas pour l'école, j'ai juste histoire d'automatiser des taches. Modifié le 26 avril 2016 par cFlavien 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cFlavien Posté(e) le 28 avril 2016 Auteur Partager Posté(e) le 28 avril 2016 @CoolRaoul, j'ai réussi à utiliser ton script avec les lignes ci-dessous, ça fait exactement ce que je voulais Juste quelques petit point, que je n'ai pas résolu, ou j'aurai besoin d'aide. Ligne 18, au lieu de déplacer les fichier les fichiers LeGrosBoeuf AVEC l’extension mp3, il déplace tous les fichier LeGrosBoeuf et TOUT les mp3. Ligne 16, pour avoir des lignes moins longues je voudrais réutiliser des variables comme ceci, mais il n'arrive pas trouvé le dossier source. Sans doute des 'apostrophes' a placer mais j'ai essayer de plusieurs façons et je n'ai pas trouvés ou les mettre. moveto -c ${download} /${podcast}/Apero du Captain/ ADC Lorsque j’exécute les lignes une à une dans putty ça marche très bien. J'ai enregistré le code ci-dessous dans un fichier .sh, mais quand je l’exécute avec putty ou avec le planificateur de tâche il ne marche pas (command not foud). Je l’exécute tout simplement avec cette ligne "/volume1/homes/Flavien/Script_Synology/moveto_script.sh" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 download='/volume1/homes/Flavien/Download' public='/volume1/public' photo='/volume1/photo' podcast='/volume1/music/Podcast' video='/volume1/video' ############# PHOTO ############# moveto -c ${download} '/volume1/photo/A_TRIER' jpg moveto -c ${download} '/volume1/photo/A_TRIER' png ################################### ############# PODCAST ############# moveto -c ${download} '/volume1/music/Podcast/Apero du Captain/' ADC moveto -c ${download} '/volume1/music/Podcast/wapx/' wapx moveto -c ${download} '/volume1/music/Podcast/Le Gros Boeuf/' LeGrosBoeuf mp3 ################################### ############# VIDEO ############# moveto -c ${download} ${video} mkv moveto -c ${download} ${video} mp4 ################################### 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 28 avril 2016 Partager Posté(e) le 28 avril 2016 il y a 51 minutes, cFlavien a dit : Ligne 18, au lieu de déplacer les fichier les fichiers LeGrosBoeuf AVEC l’extension mp3, il déplace tous les fichier LeGrosBoeuf et TOUT les mp3. Tous les paramètres à partir du 3ème et suivants sont la listes des extensions de fichiers à déplacer à partir du dossier nommé par le paramètre #1 vers le dossier nommé par le paramètre #2. Sur la ligne 18, tu as mis en paramètre #3 "LeGrosBoeuf" . Le script interprète ça comme le déplacement des fichiers nommés "<machin>.LeGrosBoeuf". Je ne pense pas que ce soit ce que tu cherches à faire. Citation Ligne 16, pour avoir des lignes moins longues je voudrais réutiliser des variables comme ceci, mais il n'arrive pas trouvé le dossier source. Sans doute des 'apostrophes' a placer mais j'ai essayer de plusieurs façons et je n'ai pas trouvés ou les mettre. moveto -c ${download} /${podcast}/Apero du Captain/ ADC Il faut utiliser des *doubles* quotes (") pour que les variables soient interpolées à l'intérieur tout en conservant les espaces, autrement dit: moveto -c ${download} "/${podcast}/Apero du Captain/" ADC Citation Lorsque j’exécute les lignes une à une dans putty ça marche très bien. J'ai enregistré le code ci-dessous dans un fichier .sh, mais quand je l’exécute avec putty ou avec le planificateur de tâche il ne marche pas (command not foud). Je l’exécute tout simplement avec cette ligne "/volume1/homes/Flavien/Script_Synology/moveto_script.sh" La première ligne de ton script doit être une ligne "shebang" pour indiquer le shell à utiliser, avec ce format: #! /bin/bash Il doit être exécutable aussi ("chmod +x /volume1/homes/Flavien/Script_Synology/moveto_script.sh") Essaie de vérifier ça déjà. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cFlavien Posté(e) le 28 avril 2016 Auteur Partager Posté(e) le 28 avril 2016 (modifié) il y a 47 minutes, CoolRaoul a dit : Sur la ligne 18, tu as mis en paramètre #3 "LeGrosBoeuf" . Le script interprète ça comme le déplacement des fichiers nommés "<machin>.LeGrosBoeuf". Je ne pense pas que ce soit ce que tu cherches à faire. Non pas tout à fait ça, je veux déplacer les fichier dont le non est "LeGrosBoeuf" avec l'extension .mp3 (LeGrosBoeuf_01.mp3, LeGrosBoeuf_02.mp3,..) Il faut peut être modifier ton script "moveto" pour que le 1er argument corresponde à une chaîne de caractère du non de fichier? (Éventuellement, ne chercher que dans le non et pas dans l’extension) il y a 47 minutes, CoolRaoul a dit : Il faut utiliser des *doubles* quotes (") pour que les variables soient interpolées à l'intérieur tout en conservant les espaces, autrement dit: moveto -c ${download} "/${podcast}/Apero du Captain/" ADC Ça nickel ça marche, merci il y a 47 minutes, CoolRaoul a dit : La première ligne de ton script doit être une ligne "shebang" pour indiquer le shell à utiliser, avec ce format: #! /bin/bash #! /bin/bash download='/volume1/homes/Flavien/Download/TEST_IN' photo='/volume1/homes/Flavien/Download/TEST_OUT/photo' podcast='/volume1/homes/Flavien/Download/TEST_OUT/podcast' video='/volume1/homes/Flavien/Download/TEST_OUT/video' ############# PHOTO ############# moveto -c ${download} ${photo} jpg moveto -c ${download} ${photo} png ############# PODCAST ############# moveto -c ${download} "${podcast}/Apero du Captain" ADC moveto -c ${download} "${podcast}/wapx" wapx moveto -c ${download} "${podcast}/Le Gros Boeuf" LeGrosBoeuf mp3 ############# VIDEO ############# moveto -c ${download} ${video} mkv moveto -c ${download} ${video} mp4 Je pense être, bon mais la commande "chmod +x /volume1/homes/Flavien/Script_Synology/test.sh" puis "cd /volume1/homes/Flavien/Script_Synology/" puis "./test.sh". J'ai le message suivant "-ash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory" et avec "bash test.sh" Nettoyage de /volume1/homes/Flavien/Download/TEST_IN : No such file or directoryvolume1/homes/Flavien/Download/TEST_IN " non trouv▒/volume1/homes/Flavien/Download/TEST_IN : No such file or directoryvolume1/homes/Flavien/Download/TEST_IN " non trouv▒/volume1/homes/Flavien/Download/TEST_IN : No such file or directoryvolume1/homes/Flavien/Download/TEST_IN " non trouv▒/volume1/homes/Flavien/Download/TEST_IN : No such file or directoryvolume1/homes/Flavien/Download/TEST_IN " non trouv▒/volume1/homes/Flavien/Download/TEST_IN : No such file or directoryvolume1/homes/Flavien/Download/TEST_IN " non trouv▒/volume1/homes/Flavien/Download/TEST_IN : No such file or directoryvolume1/homes/Flavien/Download/TEST_IN " non trouv▒/volume1/homes/Flavien/Download/TEST_IN : No such file or directoryvolume1/homes/Flavien/Download/TEST_IN " non trouv▒/volume1/homes/Flavien/Download/TEST_IN Modifié le 28 avril 2016 par cFlavien 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 28 avril 2016 Partager Posté(e) le 28 avril 2016 il y a 2 minutes, cFlavien a dit : Non pas tout à fait ça, je veux déplacer les fichier dont le non est "LeGrosBoeuf" avec l'extension .mp3 (LeGrosBoeuf_01.mp3, LeGrosBoeuf_02.mp3,..) Il faut peut être modifier ton script "moveto" pour que le 1er argument corresponde à une chaîne de caractère du non de fichier? (Éventuellement, ne chercher que dans le non et pas dans l’extension) En effet, j'ai proposé le script en fonction de ton exemple ci dessous qui ne parlait que d'extension; Le 20/4/2016 at 21:19, cFlavien a dit : exemple: Si extension est ".jpg ou .png" et nom du fichier contient "toto" alors déplacer vers "volume1/photos/toto/" Par contre, si tu veux pouvoir filtrer sur *l'ensemble* du nom du fichier, suffira de modifier la line suivante; findargs+=( "-name" "*.$ext" "-o" ) et la remplacer par findargs+=( "-name" "$ext" "-o" ) (faudrait aussi peut-être donner un autre nom à la variable "ext" maintenant qu'on l’interprète différemment mais c'est cosmétique) Optionnellement, tu peux aussi utiliser "-iname" au lieu de "-name" comme cela ça ignorera les différence majuscules/minuscules Ayant fait ça, suffira d'utiliser pour les paramètres 3 et suivants "*.mp3" au lieu de simplement "mp3" (mettre toujours les doubles quotes pour éviter les surprises), et, dans le cas ci dessus: "LeGrosBoeuf*.mp3" Citation Je pense être, bon mais la commande "chmod +x /volume1/homes/Flavien/Script_Synology/test.sh" ne fait rien, ni message d'erreur ni déplacement. Encore heureux que ça ne fasse pas de message d'erreur! Je ne vais pas suggérer des commandes qui font des erreurs quand même! Par contre, une fois cela effectué, essayer de nouveau lancer le script dans le contexte ou ça plantait (à savoir: "quand je l’exécute avec putty ou avec le planificateur de tâche il ne marche pas (command not foud)"). 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cFlavien Posté(e) le 28 avril 2016 Auteur Partager Posté(e) le 28 avril 2016 il y a 17 minutes, CoolRaoul a dit : Encore heureux que ça ne fasse pas de message d'erreur! Je ne vais pas suggérer des commandes qui font des erreurs quand même! Par contre, une fois cela effectué, essayer de nouveau lancer le script dans le contexte ou ça plantait (à savoir: "quand je l’exécute avec putty ou avec le planificateur de tâche il ne marche pas (command not foud)"). J'ai éditer mon post entre temps "-ash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory" pour "./test.sh" ": No such file or directoryvolume1/homes/Flavien/Download/TEST_IN" pour "bash test.sh" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 28 avril 2016 Partager Posté(e) le 28 avril 2016 à l’instant, cFlavien a dit : J'ai éditer mon post entre temps "-ash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory" pour "./test.sh" ": No such file or directoryvolume1/homes/Flavien/Download/TEST_IN" pour "bash test.sh" Ok, typique d'un script édité avec un éditeur Windows mal configuré pour une utilisation Unix. Utilise Notepad ++ avec les options suivantes: Et pour réparer ton fichier actuel, toujours avec Notepad++, dans le menu "édition": suivi de "enregistrer" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cFlavien Posté(e) le 28 avril 2016 Auteur Partager Posté(e) le 28 avril 2016 C'était bien, c'était ça le "^M", j'avais fait un cat test.sh et j'avais bien vue les ^M en fin de ligne, qui n'était pas dans notepad++ ! Merci beaucoup, en peaufinant mon script je devrait pouvoir obtenir le résulta que je souhaite. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.