Leumas Posté(e) le 19 mai 2014 Posté(e) le 19 mai 2014 Bonjour à tous, je suis newbie dans le monde linux, j'essaie de faire un script pour déplacer mes fichiers de séries. J'ai un ds213 avec DSM 5 derniere version. J'ai les erreurs suivantes lorsque je l'execute : DiskStation> sh MoveSeries.sh : not foundsh: line 2: Arrow find: -exec CMD must end by ';' find: -exec CMD must end by ';' find: -exec CMD must end by ';' : not foundsh: line 7: Simpsons find: -exec CMD must end by ';' find: -exec CMD must end by ';' find: -exec CMD must end by ';' : not foundsh: line 12: Mentalist find: -exec CMD must end by ';' find: -exec CMD must end by ';' find: -exec CMD must end by ';' : not foundsh: line 17: MoveTemp Voici mon script : #!/bin/sh echo "Arrow" find . -type f -iname "*arrow*.mkv" -exec cp '{}' /volume1/Videos/Series/Arrow/Saison 2/ ; find . -type f -iname "*arrow*.mp4" -exec cp '{}' /volume1/Videos/Series/Arrow/Saison 2/ ; find . -type f -iname "*arrow*.avi" -exec cp '{}' /volume1/Videos/Series/Arrow/Saison 2/ ; echo "Simpsons" find . -type f -iname "*simpsons*.mkv" -exec cp '{}' /volume1/Videos/Series/Simpsons/Season 25/ ; find . -type f -iname "*simpsons*.mp4" -exec cp '{}' /volume1/Videos/Series/Simpsons/Season 25/ ; find . -type f -iname "*simpsons*.avi" -exec cp '{}' /volume1/Videos/Series/Simpsons/Season 25/ ; echo "Mentalist" find . -type f -iname "*mentalist*.mkv" -exec cp '{}' /volume1/Videos/Series/The Mentalist/Saison 6/ ; find . -type f -iname "*mentalist*.mp4" -exec cp '{}' /volume1/Videos/Series/The Mentalist/Saison 6/ ; find . -type f -iname "*mentalist*.avi" -exec cp '{}' /volume1/Videos/Series/The Mentalist/Saison 6/ ; echo "MoveTemp" mv /volume1/Download/_FeedFiles/* /volume1/Download/_Temp/ Pouvez-vous m'aider et également m'aider à l'optimiser ? Merci 0 Citer
bud77 Posté(e) le 19 mai 2014 Posté(e) le 19 mai 2014 Comment as-tu créer ton script ? As-tu fais un "vi" du fichier, pour être sur qu'il n'y ai pas des "^M" en fin de lignes ? 0 Citer
CoolRaoul Posté(e) le 19 mai 2014 Posté(e) le 19 mai 2014 (modifié) Vu les erreurs je ne serai pas étonné, comme le suggère Bud, que tu ai édité ton script avec un editeur windows qui ne gère pas les fin de lines unix. Et pour l'optimisation du code, je ferai un truc dans ce genre (gaffe, non testé; commencer en remplacant le "-x" du 2eme "tar" par "-t" pour valider) #!/bin/sh PATH=/bin:/usr/bin copyfiles () { pattern="$1" target="$2" find . -name '@eaDir' -prune -o -type f -print | grep -i -E "$pattern" | tar -c --files-from=- --transform="s@.*/@@" | tar -x -C "$target" -vf - } SERIES="/volume1/Videos/Series" copyfiles "arrow.*.(mkv|avi|mp4)" "$SERIES/Arrow/Saison 2/" copyfiles "simpson.*.(mkv|avi|mp4)" "$SERIES/Simpsons/Season 25/" copyfiles "mentalist.*.(mkv|avi|mp4)" "$SERIES/Arrow/Saison 2/" Le "transform" du premier tar sert à mettre les chemins de fichiers "a plat" (pas de sous-dossiers à l'arrivée) On doit pouvoir faire plus compact a coup de rsync (/usr/syno/bin/rsync) avec les options "--include" et "--exclude" mais j'ai pas le temps de maquetter ça là. Si tu as le temps ça peut faire un bon exercice. **edit** remplacé le second "-prune" du "find" par un "-print", voila ce qui ce passe avec les scripts à l'arrache pas testés. Et c'est probablement pas le dernier bug. Désolé Modifié le 19 mai 2014 par CoolRaoul 0 Citer
Leumas Posté(e) le 19 mai 2014 Auteur Posté(e) le 19 mai 2014 Merci Bud, merci CoolRaoul effectivement j'ai fait le script avec notepad++ ... c'est bête, mais sans votre aide j'aurais pu chercher longtemps ! Alors pour info, il est possible de continuer à utiliser notepad++ il suffit de : faire affichage > afficher Symboles spéciaux> afficher tout puis Edition > convertir saut de ligne > unix Pour l'optimisation je vais tester tout ca, j'avais aussi pensé au rsync, mais je débute alors j'ai fait au plus simple. Et je vais esssayer de mettre un peu de logs dans tout ca. Merci beaucoup 0 Citer
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.