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

MATLAB Discussion :

Récuperer le nombre de sous dossier


Sujet :

MATLAB

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut Récuperer le nombre de sous dossier
    Bonsoir, je veux avoir le nombre de sous dossier d'un dossier principal, afin de l'utiliser dans une boucle. Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Tu utilises la fonction dir et tu identifies les dossiers grâce au champs isdir de la structure renvoyée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >> d = dir;
    >> idx = [d(:).isdir];
    >> d = d(idx);

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Plutôt d = dir('<chemin dossier principal>');.

    Note : attention que la fonction dir prend aussi en compte le dossier parent '..' et dossier courant '.'

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Peut on avoir le répertoire automatiquement? et est ce que le fichier père est inclus dans le nombre, je veux faire quelque chose qui ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PathName = uigetdir;
    d = dir(fullfile(PathName,'*.txt'));
    Sauf qu'ici ne s'agit pas de fichier txt mais des dossiers.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Je possède un dossier qui contient 29 sous dossier. Quand j'applique ça se me donne 32:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> PathName = uigetdir;
    >> d = dir(fullfile(PathName));
    >> idx = [d(:).isdir];
    d = d(idx);
    >> numel (d)
     
    ans =
     
        32
    Je pense qu'il compte à partir de la racine prinpale.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Note : attention que la fonction dir prend aussi en compte le dossier parent '..' et dossier courant '.'

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Bonjour, oui apparemment c'est ça, donc pas de solution. Donc je dois saisir la valeur n avec input .

  8. #8
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour,
    Donc je dois saisir la valeur n avec input .
    Non ! il suffit d'enlever dossier parent '..' et dossier courant '.' de la liste renvoyée par dir(), filtrer par isdir, puis calculer length() de ce qu'il reste.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Salut! j'ai pas bien compris, je peux voir le code svp?pour lenght je pense que numel sera mieux non?

  10. #10
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Comme précisé par Winjerome, dir() rajoute à la liste des fichiers/répertoire deux élements, nommés "." et ".."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    d= dir(...)
    length(d([d.dir])) -2
    ou encore plus proprement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    d=  d([d.dir] & ~ismember({d.name},{'.','..'}));
    length(d)

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >> d=  d([d.dir] & ~ismember({d.name},{'.','..'}));
    Undefined variable "d" or function "d.dir".
    mais y'a pas une instruction qui indique mon dossier parent

  12. #12
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Tu as oublié de faire
    Comme précisé par Winjerome, remplace les ... par ton dossier parent.

    Le but c'est quand même de comprendre le code plutôt que de l’exécuter sans réfléchir ! dir(PARENT) va lister le contenu d'un répertoire PARENT, ce résultat est mise dans la variable d, puis on filtre ce résultat pour retenir les éléments qui t'intéresse.

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Je sais bien que veut dire la commande dir sans me le dire, sauf que lorsque j'ai vu les ... j'ai pensé qu'il s'agit d'une nouvelle syntaxe.

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> PathName = uigetdir;
    >> d = dir(fullfile(PathName));
    >> idx = [d(:).isdir];
    d = d(idx);
    >> numel (d)
     
    ans =
     
        32
    Donc la soustraction de deux donne 30, alors que j'ai 31 sous dossier, y'a t'il un problème dans ce code?

  15. #15
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Le code marche chez moi, tu devrais recompter tes dossiers en prenant garde aux dossiers système / cachés. Commence par un petit nombre de répertoire pour le test !

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Toujours la même chose, tantôt ça marche pour un dossier tantôt non!voila un dossier de moi de mai contient 31 jours (31 sous dossiers). Quand j'applique le code ça me donne toujours 32-2=30.

  17. #17
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Utilise la seconde approche qui vérifie . et .. plutôt que -2 (des fois que les deux n'y soient pas !). Sinon, regarde par toi même les noms des fichiers listés et les répertoires pour voir celui qu'il manque et vérifier qu'il est vraiment manquant !

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Le dossier principale DATA de répertoire: Document\Matlab\DATA, contient bien des sous dossiers nommés de 01 à 31. Le changement de répertoire donne toujours le même résultats.

  19. #19
    Membre éprouvé
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Points : 1 277
    Points
    1 277
    Par défaut
    Lequel est manquant dans la sortie de dir() ?

  20. #20
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 286
    Points : 105
    Points
    105
    Par défaut
    Voila, j'ai appliqué le code sur un moi de 29 jours, et l'autre de 31 jours:

    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
    >> dir(fullfile(PathName))
     
    .          04         10         16         22         28         
    ..         05         11         17         23         29         
    .DS_Store  06         12         18         24         
    01         07         13         19         25         
    02         08         14         20         26         
    03         09         15         21         27         
     
    >> PathName = uigetdir;
    >> dir(fullfile(PathName))
     
    .          04         10         16         22         29         
    ..         05         11         17         23         30         
    .DS_Store  06         12         18         24         31         
    01         07         13         19         26         
    02         08         14         20         27         
    03         09         15         21         28         
     
    >> d
     
    d = 
     
    32x1 struct array with fields:
        name
        date
        bytes
        isdir
        datenum

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2000] Compter le nombre de sous dossier dans un dossier
    Par neno69 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/01/2019, 18h53
  2. Perl - Compter le nombre de sous dossier
    Par magzz69 dans le forum Langage
    Réponses: 7
    Dernier message: 18/08/2009, 16h57
  3. Réponses: 10
    Dernier message: 07/01/2009, 10h20
  4. Nombre de dossiers et sous dossier géré par linux
    Par frog974 dans le forum Administration système
    Réponses: 4
    Dernier message: 05/09/2007, 10h08
  5. Réponses: 31
    Dernier message: 30/09/2006, 22h08

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