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 :

Récuperation de chemin d'acces de plusieurs fichiers.


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut Récuperation de chemin d'acces de plusieurs fichiers.
    Bonjour,

    Je recherche un moyen d'avoir la liste des fichiers d'un repertoire connu ainsi que tout ce que ses sous répertoires contiennent. On me demande de capturer certaines informations sur ces fichiers dont le chemin d'accès. C'est ce dernier qui me pose problème...

    on a donc par exemple (en ne ciblant que le probleme pour la clarté ):

    un repertoire donné ( ici test) :

    On me demande de recuperer les informations sur le repertoire test qui se constitue par exemple comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /test/rep1/rep11
    /test/rep1/rep12
    /test/rep2
    /test/rep3/rep31
    /test/rep3/rep32/rep321
    ...
    Je dois donc obtenir un fichier csv une enorme liste comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    fichier1;/test;...
    fichier2;/test;...
    fichier3;/test/rep1/rep11;...
    fichier4;/test/rep1/rep11;...
    fichier5;/test/rep2;...
    fichier6;/test/rep3/rep32/rep321;...
    ...

    En ce moment je suis sur cette piste ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PWD=`pwd`
    PATHMAPPING='/test'
    ls -AlR $PATHMAPPING | awk '{ for (i=1;i<NF-1;i++) { printf $i " " } ; print "'$PWD'/" $(NF) }'
    Cela m'affiche la liste de ce que contient le repertoire /test avec le chemin d'accès complet aux différents fichiers...
    mais il n'entre pas dans les repertoires ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    drwxr-xr-x 2 root root 4096 Apr 1 /test/rep1
    drwxr-xr-x 2 root root 4096 Apr 1 /test/rep2
    drwxr-xr-x 2 root root 4096 Apr 1 /test/rep3
    -rw-r--r-- 1 root root 2266 Sep 27 /test/fichier1
    -rw-r--r-- 1 root root 45963 Jan 18 /test/fichier2
    En fait j'aimerais récuperer séparement : le nom de tous les fichiers et leur chemin d'acces.

    Etant débutant, je ne connais pas trop la recursivité dans Shell si c'est ca qu'il faut utiliser ^^...

  2. #2
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    Tu peux simplement utiliser la commande find:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /test > liste_test.txt
    Ensuite tu peux utiliser les options de find pour spécifier plus finement ce que tu recherches (-type, -name, etc ...)

    Le find est récursif par défaut, donc tu auras la liste de tout ce qu'il y a dans /test ainsi que ses sous-répertoires.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Merci

    J'essaye avec ca ...

  4. #4
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Avec ceci, tu récupère le nom de chaque fichier ; le répertoire

    Explication --> http://pwet.fr/man/linux/commandes/find

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     find test -type f -printf %f\;%h\\n

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Hum, bisard quand j'utilise ces commandes, ca me donne tous les fichiers qui sont dans mon répertoire de travail.

    Par contre si je redirige le resultats dans un fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find test -type f -printf %f\;%h\\n > tmp.csv
    Le fichier contient les bonnes valeurs ...

    Je cherche encore ^^ . Le probleme de find c'est qu'il me donne pas toutes les info dont j'ai besoin...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 49
    Points : 26
    Points
    26
    Par défaut
    Tu peux utiliser cette petite boucle. Elle te donne le résultat suivant:

    fichier1;/rep
    fichier2;/rep/sousrep
    ...etc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for file in  $(find /test -type f)
    do
         BASE=`basename $file`
         DIR=`dirname $file`
         echo "$BASE;$DIR"
    done > liste_test.txt

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Merci c'est exactement ca que je cherchais :p.
    J'ai pas trop compris ce que t'as fait mais en adaptant tes variables a mon programme ca me donne bien tous mes fichiers;repertoire.

    A present je dois m'occuper de la saisie des autres données, je pense pouvoir y arriver en rajoutant des lignes a la boucle.

    zuper

  8. #8
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Tu peux utiliser l'option "-ls" à la commande find qui affiche plein d'infos supplémentaires.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. syntaxe pour le chemin d'acces a un fichier
    Par niarkyzator dans le forum Delphi
    Réponses: 3
    Dernier message: 19/12/2006, 19h23
  2. Récupérer le chemin d'accés d'un fichier
    Par massol joel dans le forum Contribuez
    Réponses: 2
    Dernier message: 24/10/2006, 16h03
  3. [VBA-E]récupérer le chemin d'accès d'un fichier
    Par gil68 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/02/2006, 18h50
  4. Réponses: 5
    Dernier message: 07/05/2004, 09h44
  5. Chemin d'accès d'un fichier
    Par guitaros dans le forum Langage
    Réponses: 6
    Dernier message: 16/01/2004, 09h27

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