Aller au contenu

Featured Replies

Posté(e)

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

Posté(e)

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 ?

Posté(e)

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é par CoolRaoul

Posté(e)
  • Auteur

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 :D

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.

Invité
Répondre à ce sujet…

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.