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 :

Création d'un fichier bash qui va lister les fichiers du répertoire où se trouve le sh


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Par défaut Création d'un fichier bash qui va lister les fichiers du répertoire où se trouve le sh
    Bonjour,

    je voudrais savoir comment créer un fichier bash (#!/bin/bash) qui va lister les fichiers du répertoire dans lequel il est situé.

    Merci de votre aide.

  2. #2
    Membre habitué Avatar de Marcel_Patoulatchi
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par défaut
    Hello !

    A priori, code:

    A part si tu veux uniquement les fichiers et non répertoires, sinon il faut préciser un paramètre.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 265
    Par défaut
    voire :
    pour mettre dans un fichier texte.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Par défaut En faite
    Salut et merci de ta reponse.

    En faite, pour chaque fichier du répertoire je veux copier les fichiers ayant une DATE supérieur au jour J-1 dans un autre fichier .

    Exemple: aujourd’hui 5 mai bah avec mon script je veux récupérer tous les nouveaux fichier qui ont une date supérieur au 4 MAI et les copier dans un fichier avec un nom lambda

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 352
    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 352
    Par défaut
    Bonjour,

    Les réponses à la question initiale sont fausses: elles listent les fichiers du répertoire depuis lequel on exécute la commande et non les fichiers se trouvant dans le répertoire de la commande elle-même
    -Je laisse N_BaH argumenter sur le fait d'utiliser ls...

    -Pose ton problème en entier, la première demande n'a rien à voir avec la 2ème...

    Et es-tu sure de vouloir mettre plusieurs fichier dans un seul fichier (c'est ce que tu demandes dans la 2ème question) ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Par défaut Voici la consigne :)
    1) Créé un fichier Bash qui va lister les fichier dans mon répertoire.

    2) Pour chaque fichier du répertoire afficher la date de dernière modif.

    3) Pour chaque date regarder ceux modifié depuis la date d'hier ou + et qui n'a pas encore ete mis dans le fichier "a send" (voir etape 4)

    4) Copier les fichier ayant une date de modif supérieur a la date J-1 dans un autre repertoire ( un dossier que je vais apl "a send"

    En gros le but est de mettre tout les nouveautés dans le fichier "a send"



    Merci a vous tous .
    Je bloque vraiment x)

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 6
    Par défaut Debut de réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    ls -l
    find . -mtime -1 -exec  cp {}  to_send/ \;
    ce script fonctionne , mais n'est pas optimisé. Je ne souhaite copier que les images donc (jpg, jpeg, png, gif etc..)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Bonjour,

    bien sûr, si le seul but du script était de lister les fichiers du répertoire courant, on pourrait utiliser ls...
    mais
    ON N'UTILISE PAS ls DANS UN SCRIPT !!!
    ou au moins on n'essaie même pas d'en parcourir la sortie, parce que les noms de fichiers peuvent contenir des caractères qui interfèrent avec l'IFS (espace, tabulation, saut de ligne).

    ce que tu veux faire est parfaitement réalisable dans une seule commande find.

    chaque message apporte un petit ajout au cahier des charges, c'est pénible !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 837
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lilsonmada Voir le message
    Citation Envoyé par lilsonmada Voir le message
    je voudrais savoir comment créer un fichier bash (#!/bin/bash) qui va lister les fichiers du répertoire dans lequel il est situé.
    1) Créé un fichier Bash qui va lister les fichier dans mon répertoire.
    Bonjour

    Déjà il ne faut pas confondre "l'endroit où je me trouve quand je lance un script" et "l'endroit où se trouve le script".
    • L'endroit où je me trouve, c'est (au choix) .; $(pwd), $PWD ou $(/bin/pwd) (la différence entre $(pwd) et $(/bin/pwd) est minime et ne concerne que les liens symboliques. Si par exemple tu te trouves dans un dossier "x" qui pointe vers (par exemple) "/tmp", la première te donnera "x" et la seconde "/tmp").
    • L'endroit où se trouve le script, c'est $(dirname "$0").


    Ensuite, pour traiter (par exemple afficher) les fichiers situés dans un répertoire "xxx", la syntaxe est la suivante:
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for fic in "xxx"/*; do
        echo "$fic"
    done
    Les guillemets sont important dans le cas où "xxx" est un nom avec des espaces. Mais il faut les enlever pour l'étoile sinon elle n'est pas étendue. Et dans le traitement (ici l'affichage), les guillemets sont importants si le fichier traité est lui-aussi un nom avec des espaces.

    A partir de là, si tu veux suivre l'idée de disedorgue, alors un peu de stat pour récupérer le status du fichier, de cut pour couper les infos de ce status sur ce qui t'intéresse et de if pour faire des choix et c'est réglé...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Lister les fichiers d'un dossier et les cibler avec un lien hypertexte
    Par drn_008 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/04/2014, 23h55
  2. Réponses: 2
    Dernier message: 29/12/2013, 13h29
  3. Réponses: 5
    Dernier message: 02/05/2009, 19h10
  4. Lister les fichiers d'1 rép. dans un fichier
    Par mido70 dans le forum VBScript
    Réponses: 1
    Dernier message: 13/12/2008, 18h31
  5. Réponses: 7
    Dernier message: 08/01/2007, 19h18

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