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

Ubuntu Discussion :

lister que les répertoires


Sujet :

Ubuntu

  1. #1
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut lister que les répertoires
    Bonsoir,

    J'aimerai n'affiche avec un ls que les répertoires.
    cad que quand je fait un ls -l, le premier caractère de la 1ère ligne désigne le type de fichier (si c'est un dossier "d" ou un fichier "-").
    Y'a-t-il une option du ls ou une solution adapté pour lister que les repertoires d'un répertoire courant ?

    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    une manière de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ls -l | grep ^d | tr -s ' ' ' ' |cut -d' ' -f8

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ls -d */
    dir1/ dir2/
     
    ls -d1 */
    dir1/
    dir2/
    On peut mettre */ dans une variable, ou un tableau, et utiliser echo, ou printf '%s\n'

  4. #4
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Mygale1978 c'est pas ca car cela m'affiche les horaires de créations des fichiers
    Pour N_BAH, c'estca mais le contexte est différent.
    En fait, j'ai un fichier comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -rw-r--r-- 1 blec blec   0 jan 5 16:45 fic
    lrwxrwxrwx 1 blec blec   3 jan 5 16:55 l2
    drwxr-xr-x 1 blec blec  48 jan 5 16:57 machin
    et j'aimerai que mon programme c affiche le type de chaque ligne de fichier
    comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fic est un fichier
    l2 est un lien symbolique
    machin est un dossier
    sachant que le type de fichier est au début de la ligne et le nom du fichier en dernier.

    Comment faire ?

    nb: Voici ce que je fais déja

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <fcnlt.h>
    #include <unistd.h>
    
    int main(){
    
    open("fichier.txt",O_CREAT|O_RDWR,0777);
    execl("/bin/ls","ls",NULL);
    execl("/bin/cat","cat","fichier.txt",NULL);
    .
    .
    ici, tester les lignes du fichier pour afficher les types et le nom des fichiers
    .
    .
    
    }
    Une idée ?

    Merci d'avance

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    Mygale1978 c'est pas ca car cela m'affiche les horaires de créations des fichiers
    comme ceci:
    Si -f8 est = à l'heure de création chez toi, il suffit de décaler d'un champ (-f9) dans ton cas

    Sinon pour ton problème, tu peux facilement le réaliser avec un script shell.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for contenu in `ls` 
    do 
    [ -f "$contenu" ] && echo "$contenu est fichier"
    [ -d "$contenu" ] && echo "$contenu est un repertoire"
    [ -L "$contenu" ] && echo "$contenu est un lien symbolique"
    done
    Dernière modification par Invité ; 09/01/2010 à 00h40.

  6. #6
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    J'ai compris merci ca marche.
    Mais le problème c'est que je fais un programme en c.
    j'ai du mal à faire une boucle for dans ce cas pour tester toutes les lignes et afficher le résultat comme indiqué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fic est un fichier
    l2 est un lien symbolique
    machin est un dossier
    Si quelq'un a une solution, je suis preneur

  7. #7
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    J'ai compris merci ca marche.
    Mais le problème c'est que je fais un programme en c.
    j'ai du mal à faire une boucle for dans ce cas pour tester toutes les lignes et afficher le résultat comme indiqué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fic est un fichier
    l2 est un lien symbolique
    machin est un dossier
    Si quelq'un a une solution, je suis preneur
    ce que tu veux faire correspond à la commande file ou stat si j'ai bien compris.
    http://linux.die.net/man/2/stat
    http://www.linux-kheops.com/doc/man/...n2/stat.2.html
    http://www.linux-kheops.com/doc/man/...n1/file.1.html


    concernant le parcours d'un répertoire tu peux trouver ton bonheur avec les fonctions suivante
    http://pwet.fr/man/linux/fonctions_b...heques/opendir
    http://pwet.fr/man/linux/fonctions_b...eques/closedir
    http://pwet.fr/man/linux/fonctions_b...heques/readdir

  8. #8
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    oui, c'est bien ca Mygale1978 !
    sauf que la c'est un shell alors que moi c'est un programme c qui doit l'éxecuté.

    Je sais pas comment m'y prendre , j'ai jamais fait ça !

    faut-il le faire avec execv(), du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *argv[] = { "for contenu in `ls`", "do", NULL },{ "-d", "$contenu est un dossier", NULL }, { "-f","$contenu est un fichier", NULL },{ "-l", "$contenu est un lien symbolique", NULL },{ "done", NULL, NULL };
    execv ( "/bin/ls", argv);
    pour jabounet, c'est pas vraiment avec le file ou le stat que je ne connais meme pas.
    merci quand même.
    Une solution ?

  9. #9
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Citation Envoyé par mouss4rs Voir le message
    pour jabounet, c'est pas vraiment avec le file ou le stat que je ne connais meme pas.
    merci quand même.
    Une solution ?
    as tu executé file sur différent type de fichier (répértoire, lien symboliques,...)?

    dans la page de man de stat il y'a des macro
    ...
    Les macros POSIX suivantes sont fournies pour vérifier le type de fichier :

    S_ISLNK(m)
    est-ce un lien symbolique ?
    S_ISREG(m)
    un fichier régulier ?
    S_ISDIR(m)
    un répertoire ?
    S_ISCHR(m)
    ...
    ce qui me semble répondre a ton besoin
    Mais le problème c'est que je fais un programme en c.
    j'ai du mal à faire une boucle for dans ce cas pour tester toutes les lignes et afficher le résultat comme indiqué:
    Code :

    fic est un fichier
    l2 est un lien symbolique
    machin est un dossier

    Si quelq'un a une solution, je suis preneur
    ou alors je n'ai rien compris.....

  10. #10
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    en fait c'est un programme en c et non pas un script.

  11. #11
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Au faite, Pour Mygale1978, on peut faire san le tr cad:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -l | grep ^d |cut -d' ' -f8
    Pour revenir a mon programme, c'est un programme en c et non pas un script.
    Il faut que j'écrive un programme en c qui lit un fichier texte dont les lignes ressemblent acelles affichés par un ls -l genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -rw-r--r-- 1 blec blec  0 janv 5 16:47 fic
    lrwxrwxrwx 1 blec blec 3  janv 5 16:55 l2
    drwxr-xr-x 2 blec blec 48 janv 5 16:47 machin
    le programme doit afficher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fic est un fichier
    l2 est un lien symbolique
    machin est un dossier
    Voilà, je préfère le poster ailleurs car ceci concerne la programmation en c.
    a moins que, vous savez comment faire ?

    merci d'avance

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

Discussions similaires

  1. Lister que les sous-repertoires d'un répertoire
    Par spawns dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2015, 17h17
  2. [Vxi3] Ne lister que les doublons
    Par tomanu dans le forum Deski
    Réponses: 5
    Dernier message: 09/12/2010, 06h46
  3. Lister tous les répertoires virtuelles
    Par toxine7777 dans le forum ASP
    Réponses: 1
    Dernier message: 13/10/2010, 14h14
  4. N'afficher que les répertoires du voisinage réseau
    Par SergioMaster dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2010, 09h09
  5. [Tableaux] Lister tous les répertoires dans une liste
    Par cdevl32 dans le forum Langage
    Réponses: 10
    Dernier message: 01/03/2008, 18h20

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