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 :

Afficher le contenu d'un répertoire simplement


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    unknown
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : unknown

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Afficher le contenu d'un répertoire simplement
    Bonjour,

    Je cherche a scripter ceci:

    "Dans le repertoire courant si il existe d'autres fichiers que ce meme script , affiche-les ."

    J'ai compris en lisant le man que grep doit pouvoir faire l'affaire mais j'ai pas réussi ( complexe ) .
    Je peux poster un essai si besoin.

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 722
    Points
    12 722
    Par défaut
    Bonjour et bienvenue,

    La question est un peu vague, comment doit on considérer la présence d'un répertoire, par exemple ?
    Et doit on prendre aussi ce que l'on appelle les fichiers cachés ?

    Enfin, ici, grep n'est pas vraiment utile, je pense qu'une boucle while ou for et la commande test sont suffisantes pour ton besoin si on a pas besoin de descendre dans les répertoires potentiellement présents.
    On pourrait aussi sortir l'artillerie lourde et résoudre ton problème avec juste la commande find.
    Cordialement.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par hkkmori Voir le message
    Je cherche a scripter ceci:

    "Dans le repertoire courant si il existe d'autres fichiers que ce meme script , affiche-les ."
    Manifestement, il s'agit d'un exercice.
    Ici, on ne résoudra pas l'exercice à ta place, mais si tu essaies quelque chose et que ça ne fonctionne pas exactement comme tu voudrais, on pourra t'aider!

    J'ai compris en lisant le man que grep doit pouvoir faire l'affaire mais j'ai pas réussi ( complexe ) .
    Oui, grep peut être un bon candidat!

    Je peux poster un essai si besoin.
    Oui, montre-nous tes essais!

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

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

    vu qu'il s'agit de créer un script, j'aurais tendance à rester autant que possible "full shell" (une préférence ? POSIX, bash, ksh, zsh... ?).

    autrement dit :
    Dans le répertoire courant
    • quelle est la notation pour désigner le script courant ?


    afficher les fichiers (s'il en existe)
    • comment parcourir les éléments d'un répertoire ?
    • comment distingue-t-on un fichier des autres éléments qui peuvent figurer dans un répertoire ?


    qui ne sont pas le script en cours d'exécution."
    • quelle notation permet de connaître le nom du script en cours ?


    par contre la partie « afficher les fichiers », est un peu vague : il faut afficher le nom des fichiers, ou leur contenu ?
    a priori, j'opterais pour la première hypothèse.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre à l'essai
    Homme Profil pro
    unknown
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : unknown

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Merci pour votre aide .

    Il s'agit des noms des fichiers uniquement du repertoire courant, cachés inclus, sauf le nom de ce meme script, et aussi sans les sous-repertoires.
    Ce n'est pas un exercice donné, mais je reconnais que ça en a l'air.
    En bash ça me parait correct, c'est pas obligé, pour les autres shell je sais pas.

    J'ai pensé à un script parce que c'est peut-être plus clair qu'en une seule commande.
    C'est pas joli mais voilà un de mes essais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    # analyse.bash
     
    echo "Les fichiers et sous-repertoires du repertoire courant:"
    ls -A
    echo "Maintenant les fichiers sans le script:"
    grep -d skip --exclude=analyse.bash -e *

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    c'est drôle de se focaliser sur une méthode qui n'est pas appropriée : grep, utilisé de cette manière, traite le contenu des fichiers.
    mais tu n'as donc pas testé ton script ?

    à la rigueur, tu pourrais effectivement filtrer avec grep la sortie de ls en faisant apparaître le type de fichier, mais ça ajoute des complexités inutiles, et
    ON N'UTILISE PAS ls DANS UN SCRIPT !!!

    1- comment parcourir/lister les éléments d'un répertoire (sans ls !) ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre à l'essai
    Homme Profil pro
    unknown
    Inscrit en
    Novembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : unknown

    Informations forums :
    Inscription : Novembre 2016
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    J'y arrive en partie avec find , mais je n'arrive pas a exclure le nom du script executé .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $PWD/* -maxdepth 0 -type f

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 722
    Points
    12 722
    Par défaut
    Pas très loin...
    Mais déjà, il y a quelques erreurs, voici la bonne syntaxe complète (en rouge les correctifs et rajout) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $PWD -maxdepth 1 -type f ! -name "analyse.bash"
    Mais dans ce cas, il faut que ton script bash s'appelle toujours "analyse.bash", donc pas terrible...
    l'argument $0 est le nom complet du programme lors de l'appel, donc le but est de ne prendre que son nom, et donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $PWD -maxdepth 1 -type f ! -name "${0##.*/}"
    Cordialement.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Bonjour,
    Il y a aussi l'option samefile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find $PWD -maxdepth 1 -type f ! -samefile "$0"
    Cordialement.

Discussions similaires

  1. [DOM] Afficher le contenu d'un répertoire d'images
    Par isa28 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/10/2008, 22h35
  2. Réponses: 62
    Dernier message: 25/01/2007, 16h27
  3. Afficher le contenu d'un répertoire accessible par ftp
    Par diamonds dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 11/01/2007, 19h08
  4. Réponses: 6
    Dernier message: 25/10/2006, 21h00
  5. Afficher le contenu d'un répertoire
    Par Lung dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 20/06/2006, 11h50

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