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 :

[shell] variable de recherche à partir d'une liste


Sujet :

Shell et commandes GNU

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    bah, ouais, si tu essayes d'exécuter un script bash avec sh, ça va pas fonctionner !

    ajoute un shebang (#!/bin/bash) au début du script.
    rends-le exécutable (chmod u+x tonScript)
    et exécute-le là où il est (./tonScript).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  2. #22
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    Bien disons que il n'y a que comme ca qu'il se lançait sur le media externe, ducoup j'ai tellement était vite a le tester que j'ai zap les bases....

    Merci je reteste au plus vite

  3. #23
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    bon après test perso sur le DD externe directement ca ne fonctionne pas de permission accordée.

    En local avec un dossier contenant répertoires et fichiers, le soucis il me copie juste le contenu identique dans un nouveau dossier "trier" voilà le code tester en local.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    shopt -s extglob
    src="/home/aerane/Test"
    find "$src" -type f -printf '%h|%f\n' | while IFS='|' read d f
    do
       dest="/home/aerane/Test/trier/${d/$src\/}"
       test -d "$dest" || mkdir -p "$dest"
       cp "$d/$f" "/$dest/${f//+([[:punct:]]|[0-9])/ }"
    done

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    ça semble fonctionner pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ ls -R monDir/
    monDir/:
    monSousDir1  monSousDir2  monSousDir3  monSousDir4
     
    monDir/monSousDir1:
    fi-c_h%ier123
     
    monDir/monSousDir2:
    fi-c_h%ier123
     
    monDir/monSousDir3:
    fi-c_h%ier123
     
    monDir/monSousDir4:
    fi-c_h%ier123
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ cat monScript
    #!/bin/bash
    shopt -s extglob
    src="./monDir"
    find "$src" -type f -printf '%h|%f\n' | while IFS='|' read d f
    do
       dest="./monDir/trier/${d/$src\/}"
       test -d "$dest" || echo mkdir -p "$dest"
       echo cp "$d/$f" "$dest/${f//+([[:punct:]]|[0-9])/ }"
    done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ ./monScript
    mkdir -p ./monDir/trier/monSousDir1
    cp ./monDir/monSousDir1/fi-c_h%ier123 ./monDir/trier/monSousDir1/fi c h ier 
    mkdir -p ./monDir/trier/monSousDir4
    cp ./monDir/monSousDir4/fi-c_h%ier123 ./monDir/trier/monSousDir4/fi c h ier 
    mkdir -p ./monDir/trier/monSousDir2
    cp ./monDir/monSousDir2/fi-c_h%ier123 ./monDir/trier/monSousDir2/fi c h ier 
    mkdir -p ./monDir/trier/monSousDir3
    cp ./monDir/monSousDir3/fi-c_h%ier123 ./monDir/trier/monSousDir3/fi c h ier
    quand j'enlève les echo, et après exécution du script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    30
    ls -R ./monDir
    monDir/:
    monSousDir1  monSousDir2  monSousDir3  monSousDir4  trier
     
    monDir/monSousDir1:
    fi-c_h%ier123
     
    monDir/monSousDir2:
    fi-c_h%ier123
     
    monDir/monSousDir3:
    fi-c_h%ier123
     
    monDir/monSousDir4:
    fi-c_h%ier123
     
    monDir/trier:
    monSousDir1  monSousDir2  monSousDir3  monSousDir4
     
    monDir/trier/monSousDir1:
    fi c h ier 
     
    monDir/trier/monSousDir2:
    fi c h ier 
     
    monDir/trier/monSousDir3:
    fi c h ier 
     
    monDir/trier/monSousDir4:
    fi c h ier
    par contre, le fait que trier soit sous Test peut poser un problème, car les fichiers sous trier seront aussi pris en compte...
    il faut adapter le script et le find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    shopt -s extglob
    src="/sda1/CFT" #à mettre à ta sauce
    dest="/sda6/MFT" #idem
    find "$src" -path "$dest" -prune -o -type f -printf '%h|%f' | while IFS='|' read d f
    do
       dest="$dest/${d/$src\/}"
       ...
    done
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #25
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    bon une fois le probleme du DD externe réglé j'ai tenté un premier avec echo qui n'a pas de message d'erreur, le hic il ne me crée pas le dossier au nom du fichier mais ça crée un dossier /media/sdb5/a_trier dans le dossier trier.
    résultat avec le script donner par N_BaH
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cp /media/sdb5/a_trier/_YunF__ZF__Kyouka2_10_.mp4 /media/sdb5/trier//media/sdb5/a_trier/ YunF ZF Kyoukai mp 
    mkdir -p /media/sdb5/trier//media/sdb5/a_trier
    cp /media/sdb5/a_trier/_YunF__ZF__Kyoukai_2_12_.mp4 /media/sdb5/trier//media/sdb5/a_trier/ YunF ZF Kyoukai mp 
    mkdir -p /media/sdb5/trier//media/sdb5/a_trier
    cp /media/sdb5/a_trier/_YunF__ZF__Kyoukai2_13_.mp4 /media/sdb5/trier//media/sdb5/a_trier/ YunF ZF Kyoukai mp
    Il me déplace tout le contenu de "a_trier" dans un dossier "trier" qu'il crée mais le souci que j'ai j'aurai besoin que le nom du dossier soit celui du fichier, et que si il existe il le copie juste :

    récapitulatif du code actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/bash
    shopt -s extglob
    src="/media/sdb5/a_trier"
    find "$src" -type f -printf '%h|%f\n' | while IFS='|' read d f
    do
       dest="/media/sdb5/trier/${d/$src\/}"
       test -d "$dest" || mkdir -p "$dest"
        cp "$d/$f" "$dest/${f//+([_]|[0-9]|[-])/ }"
    done
    le :punct: supprimait le point de l’extension, du coup j'ai testé en détaillant les caractères que j'ai sur mes fichiers tests à supprimer et ça fonctionne.

    Après ce n'est pas fini, car je dois ignoré les chiffres pour la recherche sans ignoré le fichier lui même...tout en les conservant dans le nom de fichier et non du dossier (casse tête je sais)

    Sur le plan actuel le script me les supprimes, sauf que je dois les garder dans le nom copié.

    Ce que je n'arrive pas à faire est d'ignorer le chiffre pour find. Et de le garder dans le nom de la copie, je n'ai qu'a retirer l'exception du cp.

    Donc je suis reparti sur une base tel quel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash
    shopt -s extglob
    src="/media/sdb5/a_trier"
    dest="/media/sdb5/trier"
    find "$src" -type f -printf '%h|%f\n' | while IFS='|' read d f 
    do
     
       test -d "$dest" || echo mkdir -p "$dest"
        echo cp "$d/$f" "$dest/${f//+([_]|[%]|[-])/ }"
    done
    ce qui me donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cp /media/sdb5/a_trier/_YunF__ZF__Kyouka2_10_.mp4 /media/sdb5/trier/ YunF ZF Kyoukai2 10 mp4 
    mkdir -p /media/sdb5/trier//media/sdb5/a_trier
    cp /media/sdb5/a_trier/_YunF__ZF__Kyoukai_2_12_.mp4 /media/sdb5/trier/ YunF ZF Kyoukai2 12 mp4 
    mkdir -p /media/sdb5/trier//media/sdb5/a_trier
    cp /media/sdb5/a_trier/_YunF__ZF__Kyoukai2_13_.mp4 /media/sdb5/trier/ YunF ZF Kyoukai2 13 mp4
    Il faut enfaite que j'arrive à travailler sur le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     test -d "$dest" || echo mkdir -p "$dest"

  6. #26
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    Pour retravailler le mkdir du dossier je suis tombé là-dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    variable1=$(ls repertoire)
    variable2=$(echo $varaible1 | cut -d"." -f1)
    mkdir $variable2
    mv $variable1 $variable2
    Le souci est que cela ne fonctionne que si le fichier est seul dans son répertoire ce qui n'est pas mon cas.

    Donc l'idée est de passer le nom du fichier en variable pour créer le dossier (toujours en excluant les chiffres) et c'est là que je bloque à nouveau.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    il est préférable de conserver lspour un usage interactif de la console.
    autant dire : ON N'UTILISE PAS ls DANS LES SCRIPTS !!!
    (je crie un petit peu parce que j'ai l'impression de le dire au moins une fois par semaine , mais tu n'étais pas là)

    find ne s'occupe pas du format des noms des fichiers, il sort la liste de tous les fichiers.

    si tu veux que la copie/renommage laisse les chiffres, et n'enlève que - et _ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp "$d/$f" "$dest/${f//+([_-])/ }"

    des espaces au début d'un nom de fichiers... je crois rêver... non, c'est un cauchemar !


    après je ne sais pas. la substitution fonctionne bien pour moi : "$d" n'est pas repris dans "$dest"...
    ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #28
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    il est préférable de conserver lspour un usage interactif de la console.
    autant dire : ON N'UTILISE PAS ls DANS LES SCRIPTS !!!
    Ça je l'ai assez lu dans les postes et c’était même une de mes premières erreurs sur mes premiers scripts...

    Citation Envoyé par N_BaH Voir le message
    des espaces au début d'un nom de fichiers... je crois rêver... non, c'est un cauchemar !

    après je ne sais pas. la substitution fonctionne bien pour moi : "$d" n'est pas repris dans "$dest"...
    ?
    et bien les espaces sont la car en début de certains fichier j'ai des [] contenant des - ou _ donc normal que cela finisse en espace.

    Pour la substitution je ne saurai trop dire je poste mes résultats car je ne déchiffre pas tout, mes lacunes en shell sont encore bien grandes.

    Après le problème majeur restant est la récupération du nom de fichier pour en faire un dossier.

    Quand je reprends un des scripts donnés plus haut je voie dest="./monDir... utilise tu un script secondaire ? Je n'ai pas bien saisie cette étape, mon problème viendrait peut être que je l'ai remplacer directement par les chemins où aller.

    J'ai testé un truc un peu cochon test -d "$dest" | xargs -d 'n' mkdir < liste via une liste de fichier tiré avec un ls -a hors script.
    Le résultat est pas très beau mais ça mène vers une piste, j'ai la créations de dossier construit avec des morceaux du noms original...Ça ressemble a rien en résultat du genre -__-02-__- mais ça puise les caractères dans le nom d'origine.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    les espaces sont la car en début de certains fichier j'ai des [] contenant des - ou _ donc normal que cela finisse en espace.
    j'avais bien compris; ça n'en est pas moins horrible.

    Quand je reprends un des scripts donnés plus haut je voie dest="./monDir... utilise tu un script secondaire ?
    non.
    Je n'ai pas bien saisie cette étape, mon problème viendrait peut être que je l'ai remplacer directement par les chemins où aller.
    c'est bien ce qu'il faut faire : adapter à ta configuration.

    Après le problème majeur restant est la récupération du nom de fichier pour en faire un dossier.
    je confirme : je n'avais pas entendu ça.
    tu veux bien détailler (avec des exemples, s'il te plaît.).

    mais, il faut vraiment que tu ouvres le man bash, pour y lire les paragraphes à propos du Développement des chemins et des Motifs génériques.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #30
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    Je pense être sur la bonne voie après mon gros crachat à partir de la liste, en parlant de la substitution j'ai eu en idée de la mettre avant le "$dest" dans le xargsnouveau code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin/bash -x
    shopt -s extglob
    src="/mnt/a_trier"
    dest="/mnt/trier"
    find "$src" -type f -printf '%h|%f\n' | while IFS='|' read d f #<list.txt
    do
     
       test -d "$dest" | xargs -d 'n' mkdir -p "$d/$f" "$dest"
        echo cp "$d/$f" "$dest/${f//+([_]|[%]|[-])/ }"
    done
    Résultat ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    aerane@aerane-GX723:/mnt$ ./tri_test_v02.sh
    + shopt -s extglob
    + src=/mnt/a_trier
    + dest=/mnt/trier
    + find /mnt/a_trier -type f -printf '%h|%f\n'
    + IFS='|'
    + read d f
    + test -d /mnt/trier
    + xargs -d n mkdir -p /mnt/a_trier/_Meda__Koi_to_Senkyo_to_Chocolate_11_HD_Vostfr_-.mp4 /mnt/trier
    mkdir: impossible de créer le répertoire «/mnt/a_trier/_Meda__Koi_to_Senkyo_to_Chocolate_11_HD_Vostfr_-.mp4»: Le fichier existe
    + echo cp /mnt/a_trier/_Meda__Koi_to_Senkyo_to_Chocolate_11_HD_Vostfr_-.mp4 '/mnt/trier/ Meda Koi to Senkyo to Chocolate 11 HD Vostfr .mp4'
    cp /mnt/a_trier/_Meda__Koi_to_Senkyo_to_Chocolate_11_HD_Vostfr_-.mp4 /mnt/trier/ Meda Koi to Senkyo to Chocolate 11 HD Vostfr .mp4
    Il faudrait donc exclure les extensions de fichiers si j'utilise en test sur le premier dossier où j'avais encore quelques séries.

    Ensuite il cherche à créer le nom de dossier en y incluant en exemple ici le numéro de l’épisode (ayant aussi des numéros sur mes fichiers de traitements au travail le problème reste identique) hors je cherche à les exclure si possible.

    J'ai besoin de passé le nom de fichier en variable pour en faire un nom de dossier mais en excluant les chiffres.
    Cela pour avoir un dossier dans lequel, ensuite, tout les fichiers avec un nom identique (hors chiffres toujours) s'y copie. Mais tout en gardant les numéros dans le nom du fichier:

    Exemple:

    Fichier_beta%_123 => récupération du nom en variable pour en faire un dossier => fichier_beta
    Dans fichier_beta => on copie tout les fichiers nommés=> fichier_beta%_123 fichier_beta%12254...
    Sachant que mes noms de fichiers ne sont pas réellement fixe dans la syntaxe, donc je ne peux pas les inclure en variable manuellement.

    Il faut voir ça comme une variable dynamique...

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    les test sur $d n'affiche aucune données le pipe ne sert à rien, et je me demande ce que traite (àmha inutile) xargs.

    j'ai l'impression que les spécifications ont changé
    ...
    ?

    est-ce qu'il faut tenir compte du répertoire sous lequel se trouve les fichiers, sous $src?
    càd:find "$src" -type f va afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /mnt/sda1/repertoire/fichier_b_zar%123.ext
    /mnt/sda1/autre_repertoire/fichier_-_b_zar%123.ext
    on remplace /mnt/sda1 par /mnt/sda6, et après ? que fait-on des répertoires "intermédiaires" ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #32
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    j'ai expliqué les spécificités de la chose sur la première page déjà ^^"

    disons que je test un peu en tout sens pour voir le résultat.

    Sachant que le script au final sera dans un dossier spécifique il serait plus convenable de tenir compte du répertoire où se trouveront les fichiers.
    Mais c'est le contenu qui intéresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /mnt/sda1/repertoire/fichier_b_zar%123.ext #emplacement origine
    /mnt/sda1/autre_repertoire/fichier_-_b_zar%123.ext # autre_répertoire serait celui ayant le nom des fichiers qu'il contient
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /mnt/sda1/repertoire/fichier_b_zar%123.ext
    /mnt/sda1/fichier_-_b_zar/fichier_-_b_zar%123.ext

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    donc, il faut ne pas tenir compte des répertoires intermédiaires: affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /mnt/sda1/repertoire/fichier_b_zar%123.ext
    /mnt/sda1/autre_repertoire/fichier_-_b_zar%123.ext
    doivent être copier vers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /mnt/sda6/fichier_b_zar%/fichier b zar 123.ext
    /mnt/sda6/fichier_-_b_zar%/fichier   b zar 123.ext
    on va y arriver.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #34
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    Voilà, ça se résume à ça ,en ignorant les numéros et extension pour le nom de dossier.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    c'est à dire ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  16. #36
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    si on a les fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fichier_-_b_zar%123.ext
    fichier_-_b_zar%1234.ext
    fichier_-_b_zar%12345.ext
    le dossier ou ils seront copier doit prendre en nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fichtemp_-_ko%_54.ext
    Fichtemp_-_ko%_545.ext
    dossier ainsi de suite

    pour le moments % ou - peuvent rester, je remplacerai tout au final par des underscore, plus beau pour les yeux et la lecture.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    pas très cohérent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ shopt -q extglob || shopt -s extglob
    $ echo "fichier_-_b_zar%123.ext
    fichier_-_b_zar%1234.ext
    fichier_-_b_zar%12345.ext
    Fichtemp_-_ko%_54.ext
    Fichtemp_-_ko%_545.ext" | while read f; do f="${f//?(_)+([0-9])}"; f="${f%.*}"; echo "$f"; done
    fichier_-_b_zar%
    fichier_-_b_zar%
    fichier_-_b_zar%
    Fichtemp_-_ko%
    Fichtemp_-_ko%
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #38
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    Je suis d'accord et c'est justement le soucis où m'a liste varie quotidiennement.
    Je ne peux pas vraiment lister tout les fichiers que je dois traités dans un script sinon j'aurai pu le faire sans me prendre tant la tête.

    C'est presque avoir un script dynamique au final car je ne peux pas me baser sur du fixe pour cette automatisation, si ce n'est 4 choses:
    1_l'endroit où les fichiers arrivent
    2_où ils sont copier
    3_quelle forme doit avoir le nom de dossier (nom du fichier sans chiffre)
    4_copier et garder le nom des fichiers identiques tout en corrigeant les symboles potentiellement genant(% -)

    C'est un sacré cahier des charges

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 387
    Points
    19 387
    Par défaut
    c'est sans doute pas aussi terrible que ça.

    Heureusement, il y a le Développement des chemins et les Motifs génériques.

    et si ça suffit pas (mais ça m'étonnerait), on trouvera bien une regex.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  20. #40
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 75
    Points
    75
    Par défaut
    j'espère bien car ca m'apprendrai pas mal de choses supplémentaires sur le shell, et un script de se type pourra être une très bonne base pour des plus élaborés (que j'ai déjà +/- en tête) mais tout en gardant la fonction de base de celui ci.

    Déjà réussir celui là sera d'une grande satisfaction pour moi.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/07/2010, 15h10
  2. [MySQL] effectuer recherche à partir d'une liste deroulante
    Par manguigs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/05/2009, 16h48
  3. Réponses: 18
    Dernier message: 31/01/2009, 15h05
  4. Moteur de recherche à partir d'une liste de critères
    Par ionnette dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 27/06/2008, 09h30
  5. Créer une variable d'environnement à partir d'une liste de fichier
    Par ddams dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/02/2007, 20h03

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