IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script pour automatiser des taches sur des répertoires


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Script pour automatiser des taches sur des répertoires
    Bonjour à tous !

    Je souhaite réaliser une action répétée dans tout un tas de répertoires, et je suis quasiment persuadé que le plus simple serait d'utiliser un script. Le problème est que je n'ai aucune expérience dans ce domaine, c'est pourquoi je me tourne vers vous!

    Je vous décris ma problématique, j'ai donc un répertoire de base, dans lequel j'ai plus de 500 répertoires. La constante est que la structure de ces répertoires est la même enfin quasiment, pour tous, il y a plusieurs fichiers dedans, et entre 0 et 3 sous répertoires.

    Je voudrais pour chacun de ces répertoires, exécuter les actions suivantes :

    Créer un répertoire "MyFolder"
    1) Si le répertoire "YourFolder" n'existe pas, il faut le créer
    2) Si le répertoire "HisFolder" n'existe pas, il faut le créer
    3) Déplacer les fichiers ".jpg" et ".gif" dans le répertoire précédemment créer donc "MyFolder".
    4) Vérifier qu'il n'y a plus qu'un seul et unique fichier dans ce répertoire, de type ".psd", (ignorer les sous-répertoires), et s’il y en a plus d'un seul, dans ce cas, il faut stocker le chemin de ce répertoire dans un fichier a la racine de tous les répertoires.

    Je ne sais pas si j'ai été clair, mais si ce n'est pas le cas, je vous prie de bien vouloir m'en excuser, dites-moi ce qui vous semble abstrait et j'essaierai de mieux détailler ce que je souhaite.

    Merci à tous ceux qui prendront le temps de lire, et particulièrement à ceux qui essaieront de m'aider !

    Cordialement,
    Alex.

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    tu peux utiliser une boucle


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while read 
    do 
        mkdir $REPLY/myfolder
        [ ! -d $REPLY/yourfolder ] && mkdir $REPLY/yourfolder || echo $REPLY/myfoler existe déjà 
        #repond a la problematique n°1
        [ ! -d $REPLY/hisfolder ] && mkdir $REPLY/hisfolder || echo $REPLY/hisfoler existe déjà
        # repond a la problematique n°2
        mv *jpg *jpeg *gif $REPLY/myfolder
        #repond a la problematique n°3
        # le besoin 4 est facile je te laisse le chercher.
    done < $( find /racine_a_analyser/ -type d )
    tant que lire
    faire
    si non-existe-repertoire $REPLY/youfolder alors creer $REPLY/yourfolder sinon ecrire $REPLY/yourfolder existe déjà
    # pareil pour hisfolder
    fin_boucle <injection $(du resultat de la recherche des repertoires)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Bonjour Frp31 !

    Merci beaucoup pour ta réponse ! C'est très gentil de ta part ! Je vais essayer ça ce soir, je viens tout juste de rentrer chez moi après une semaine a l'étranger !

    Je reviens vers toi dés que j'ai eu la possibilité de tester ça !

    encore merci pour ton aide.

    Cordialement,
    Alex.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frp31 Voir le message
    tu peux utiliser une boucle


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while read 
    do 
        mkdir $REPLY/myfolder
        [ ! -d $REPLY/yourfolder ] && mkdir $REPLY/yourfolder || echo $REPLY/myfoler existe déjà 
        #repond a la problematique n°1
        [ ! -d $REPLY/hisfolder ] && mkdir $REPLY/hisfolder || echo $REPLY/hisfoler existe déjà
        # repond a la problematique n°2
        mv *jpg *jpeg *gif $REPLY/myfolder
        #repond a la problematique n°3
        # le besoin 4 est facile je te laisse le chercher.
    done < $( find /racine_a_analyser/ -type d )
    tant que lire
    faire
    si non-existe-repertoire $REPLY/youfolder alors creer $REPLY/yourfolder sinon ecrire $REPLY/yourfolder existe déjà
    # pareil pour hisfolder
    fin_boucle <injection $(du resultat de la recherche des repertoires)
    Salut

    Me semble que la phrase "déplacer les .jpg et .jpeg" dans le répertoire myFolder" sous-entend "depuis le répertoire en cours de traitement" donc je remplacerais la ligne en rouge par mv "$REPLY"/*jpg "$REPLY"/*jpeg "$REPLY"/*gif "$REPLY"/myfolder.

    Et je conseillerais aussi d'encadrer chaque $REPLY de guillemets (comme je l'ai écrit dans ma commande) au cas où un dossier traité contiendrait un espace dans son nom...

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 465
    Points
    19 465
    Par défaut
    Bonjour,

    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    mv --target-directory="$REPLY/myfolder" "$REPLY/"*.{jp{,e}g,gif}
    sinon mv ne va pas comprendre où déplacer les fichiers.

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    absoluement ... bien vu ...

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    ...[/code]sinon mv ne va pas comprendre où déplacer les fichiers.
    Ben si !!! Dans la syntaxe mv "$REPLY"/*jpg "$REPLY"/*jpeg "$REPLY"/*gif "$REPLY"/myfolder, le dernier argument de la ligne étant un dossier, mv déplacera les fichiers dans ledit dossier...

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 585
    Points : 19 465
    Points
    19 465
    Par défaut
    bon, tant mieux.
    c'est ce que j'avais en mémoire, soutenu par l'existence de cette option.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    tout d'abord, un grand merci à vous tous pour votre aide, je suis vraiment touché de voir qu'autant de gens prennent le temps d'aider !

    Je n'ai toujours pas eu le temps de faire l'essaie du script, ma fille a passé une très mauvaise semaine (bien malade) et du coup j'ai du prendre des jours pour m'en occuper.

    Je pense pouvoir essayer ça d'ici demain soir, je reviens vers vous, en tous cas, encore un très grand merci pour votre aide.

    Cordialement,
    Alex.

Discussions similaires

  1. [MLD] Base de données pour un site qui émet des avis sur des hotels
    Par Anandamine dans le forum Schéma
    Réponses: 0
    Dernier message: 24/06/2012, 05h03
  2. Réponses: 3
    Dernier message: 10/02/2012, 11h40
  3. Trigger pour mettre des droits sur des procedures et des vues
    Par briino dans le forum Développement
    Réponses: 3
    Dernier message: 23/09/2009, 09h44
  4. script pour automatiser upload fichier sur site https
    Par ludo_93 dans le forum VBScript
    Réponses: 0
    Dernier message: 03/10/2008, 10h24
  5. Réponses: 6
    Dernier message: 13/11/2007, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo