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 :

relier des commandes unix ensemble


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut relier des commandes unix ensemble
    Bonjour,

    je debute dans la création de script shell et ça doit surement être une chose 'facile' mais je ne trouve pas.
    je dois afficher pour tous les fichiers d'un repertoire : le nom du fichier, sa taille et 2 informations contenues dedans sur une ligne pour chaque fichier.
    J'ai trouvé pour la taille et le nom : du -k *.txt (à moins que vous connaissiez une commande donnant plus précisement la taille?)
    pour les 2 recherches :
    ls *.txt | grep 'N° version :' *
    ls *.txt | grep 'Date :' *

    Comment reunir toutes ses informations pour un fichier sur une seule ligne?
    taille nom recherche1 recherche2

    Merci de votre aide.

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ( commande ; commande ) > fichier

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    merci de votre reponse, mais les commandes s'executent l'une apres l'autre.
    je me retrouve avec :
    taille nom du fichier 1
    taille nom2 du fichier 2
    ...
    puis
    N° version du fichier 1
    N° version du fichier 2
    ...
    puis
    Date du fichier 1
    Date du fichier 2
    ...

    alors que je voudrais l'affichage :
    taille nom N° version date du fichier 1
    taille nom N° version date du fichier 2

    j'espere avoir été plus clair, c'est pas facile à expliquer. En fait pas les commandes les unes apres les autres pour tous les fichiers, mais les commandes en meme temps pour chaque fichiers.
    la premiere ligne m'affiche la taille, le nom la date et le numéro de version du premier fichier affiché.
    la deuxieme ligne m'affiche la taille, le nom la date et le numéro de version du deuxieme fichier affiché etc...


    Merci.

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    ok j'avais pas compris

    il faut utiliser egrep à ce moment là

    commande | egrep "pattern1|pattern2"

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 129
    Points : 160
    Points
    160
    Par défaut
    voi la solution

    tu va faire un ls sur les fichier puis tu vaparcourir la liste et executer les operations les unes apres les autres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for nom in $(ls *.txt) 
    do
        echo -n $nom  >> ./resultat # La tu ecrit le nom de fichier 
                                              #echo -n pour nepas revenir a la ligne
        du -k $nom >>  ./resultat # ajouter la taille du fichier
     
        echo # pour revenir a la ligne
     
    done
    pour recuperer la date date -r <fichier>

    tu peu aussi utiliser ls -l fichier qui te donne des informations plus detailles sur le fichiers comme la date la taille les autorisations

    pour faire le trie parmis ses infos tu utilisera awk

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    merci à tous les deux pour les réponses. Je viens de tester le code et le retour semble plutôt lent? un probléme peut être au niveau de la performance du serveur?
    je vais tenter avec egrep.

    Merci.

Discussions similaires

  1. [SSH] exécuter des commandes Unix via C#
    Par Rukia dans le forum C#
    Réponses: 4
    Dernier message: 23/04/2009, 10h33
  2. exécute des commande unix sous java
    Par hbar01 dans le forum Général Java
    Réponses: 6
    Dernier message: 04/11/2008, 20h33
  3. Appeller des commandes unix dans du PL/SQL
    Par stepd dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/03/2008, 14h52
  4. [Systeme] Exécuter des commandes unix en java
    Par kenny49 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 12/02/2007, 11h37
  5. Appel des commandes UNIX
    Par Endash dans le forum Fortran
    Réponses: 1
    Dernier message: 02/06/2006, 16h37

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