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 :

Problème de commande cat


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut Problème de commande cat
    bonjour ,

    j'ai des fichiers dont lles noms contiennet la date sous format : anmoisjour
    exemple D060410.log ;

    je veux récupere la dernière ligne du fichier le plus récent :
    pour cela j'exécute la commande suivante :

    je ne sais pas pourkoi parfois ca donne un résultat bizarre , le cat ne se fait pas correctement , il m'affiche une ligne qui appartient à un fichier au milieu ..

    qqun a une idée ??
    je ne sais pas si c clair

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 859
    Points : 4 813
    Points
    4 813
    Par défaut
    Hello

    Je comprend pas pourquo itu fais un cat. Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tail -1 D04102006.log
    devrait suffir, non ?

    @++

  3. #3
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    non j'ai plain de fichiers ..... (D060401.log , D060402.log .... )

    meme plus d'une centaine ... donc je veux récupérer la dernière ligne du fichier le plus recent

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    PArce que cat te les classes dans l'ordre ... j'y crois pas trop !
    Pour le tail, tu devrais faire comme te l'a indiqué GLDavid. Pour ce qui est de récupérer le fichier le plus récent, tu devrais utiliser find.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    Tu peux faire ça même si ce n'est pas le plus propre!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -1 `ls -t | head -1`

  6. #6
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    bonjour ,

    effectivement , la commande me fourni le bon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tail -1 `ls -t | head -1`
    mais est ce que je peux donner confiance à cette commande plus que la commande cat

  7. #7
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par peppena
    mais est ce que je peux donner confiance à cette commande plus que la commande cat
    Bien plus !!!

    Une première preuve : cela fonctionne, alors qu'avec cat, ce que tu veux faire ne fonctionne pas

    Une seconde preuve : il suffit d'analyser le fonctionnement de la commande qui t'a été indiquée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -1 `ls -t | head -1`
    et dont une autre écriture plus "moderne" (compatible POSIX) serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tail -n 1 $( ls -t1 | head -n 1 )
    Il suffit alors de consulter les mans des commandes respectives : ls, tail et [url=http://man.developpez.com/man1/head.1.php#L1[/url]

    Ainsi, le ls sort les noms de fichiers par ordre de date, les plus récents en premier.
    Puis, le head ne prend que la première ligne de cette liste.
    Le tout, entre backquotes ou entre $( ), permet de passer ce dernier résultat (le nom du fichier le plus récent) à tail qui en affiche la dernière ligne du contenu, seulement.

    Ce fonctionnement ne laisse pas la place à la fantaisie . Les opérations à effectuer sont toutes spécifiées, sans reposer sur un comportement implicite d'une commande (ton usage de cat, par exemple).

    L'enchainement de commandes qui t'a été fourni est donc totalement digne de confiance !

    Tu pourras donc marquer ton sujet comme étant résolu

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

Discussions similaires

  1. commande cat dans un script
    Par sam01 dans le forum Administration système
    Réponses: 2
    Dernier message: 21/08/2008, 12h52
  2. Commandes cat et dd
    Par nono212 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 04/04/2008, 14h24
  3. commande cat ksh
    Par ouinih dans le forum Linux
    Réponses: 1
    Dernier message: 05/03/2008, 00h23
  4. problème avec la commande CAT
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/07/2007, 15h21
  5. programme c qui émule la commande cat
    Par momoh dans le forum C
    Réponses: 6
    Dernier message: 07/12/2006, 11h15

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