Analyse du nom d'un fichier en shell/Bash ...

cobra85 Messages postés 148 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaite analyser un dossier qui comporte de fichier au format:

nom_n°1_taille1_nom.txt
nom_n°1_taille1_nom_est.txt
nom_n°2_taille1_nom.txt
nom_n°2_taille1_nom_est.txt
...

le but final étant de mettre les fichiers par paire dans une requete SQL pour les monter en base.

Je voudrais que les fichiers n°1 ayant un ID pair et impaire, que le n°2 est un ID pair et impaire dans la suite du premier, ...

Est ce possible ? Comment analyser le nom d'un fichier ?

Pour le contenu je sais mais pas pour le reste.

Merci



--
Quand tu coches "Résolu", pense aux autres et donne la réponse !!!

5 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    peut-on avoir un exemple avant - après ?
    0
  2. cobra85 Messages postés 148 Statut Membre 3
     
    Salut,

    J'aurais du me relire parce que tout n'est pas français dans ce que j'ai écris !!

    En faite, je souhaite pouvoir mettre le contenu respectif de nom_n°X_taille1_nom.txt et nom_n°X_taille1_nom_est.txt dans une table avec le même ID.

    J'ai essayé avec la commande "cat", mais il me met le contenu de l'ensemble des fichiers nom_n°X_taille1_nom.txt dans une colonne et l'ensemble des fichiers nom_n°X_taille1_nom_est.txt dans une autre colonne table.

    Pour pallier à cela le temps de trouver une solution, j'ai décider de mettre le chemin de mon fichier dans la base à la place du contenu; pour cela j'ai fait le script suivant: (que j'ai tourné dans tout les sens sans succès)


    for fich1 in *nom.txt; do

    echo "$fich1"
    var1=$fich1
    done

    #Liste l'ensemble des fichier ayant pour extension "est.txt"
    for fich in *est.txt; do
    echo "$fich"
    var2=$fich

    #Insertion dans la base SQL
    TEMP='mysql --user=root --password=xxxxxxx <<MySCRIPT

    INSERT INTO test.taille VALUES ('', '1', '$var1', '$var2', '');
    MySCRIPT'done

    Le code fonctionne à peut prêt, sauf qu'a un moment donné, il me croise les valeurs (en gras, les ligne fausse):

    1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
    2 1 nom_n°1_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
    3 1 nom_n°2_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0

    4 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0

    comment puis-je faire pour la premiere partie ou pour résoudre le code de la seconde pour avoir:

    1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
    2 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
    ...

    Merci
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    comme ça ?
    $ cat liste
    1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
    2 1 nom_n°1_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
    3 1 nom_n°2_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
    4 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
    $ awk -F _ '$2 == $5 {print}' liste
    1 1 nom_n°1_taille1_nom.txt nom_n°1_taille1_nom_est.txt 0
    4 1 nom_n°2_taille1_nom.txt nom_n°2_taille1_nom_est.txt 0
    0
  4. cobra85 Messages postés 148 Statut Membre 3
     
    Salut,

    Il faudrait que dans la base MySQL, les noms des fichiers ou contenus des fichiers soit disposés comme ceci:

    +---+------------+--------------------------------+--------------------------------------+--+
    | ID | champ1 | champ2 | champ3 | n |
    +---+------------+--------------------------------+--------------------------------------+---+
    | 1 | 1 |nom_n°1_taille1_nom.txt |nom_n°1_taille1_nom_est.txt | 0 |
    | 1 | 1 |nom_n°2_taille1_nom.txt |nom_n°2_taille1_nom_est.txt | 0 |
    | 1 | 1 |nom_n°3_taille1_nom.txt |nom_n°3_taille1_nom_est.txt | 0 |
    ....

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    je ne connais pas MySQL, montre le code nécéssaire à ajouter au print, sachant que le nom du fichier est $0
    0