Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/04/2006, 16h52   #1
Membre confirmé
 
Inscription : juillet 2003
Messages : 400
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 400
Points : 202
Points : 202
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
__________________
;-) cordialement
peppena est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2006, 17h08   #2
Membre Expert
 
Avatar de GLDavid
 
Inscription : janvier 2003
Messages : 2 620
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2003
Messages : 2 620
Points : 2 474
Points : 2 474
Hello

Je comprend pas pourquo itu fais un cat. Un
Code :
1
2
 
tail -1 D04102006.log
devrait suffir, non ?

@++
__________________
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag

Je ne répond à aucune question technique par MP.
GLDavid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2006, 17h12   #3
Membre confirmé
 
Inscription : juillet 2003
Messages : 400
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 400
Points : 202
Points : 202
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
__________________
;-) cordialement
peppena est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2006, 17h41   #4
Membre éclairé
 
Inscription : mai 2004
Messages : 376
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 376
Points : 343
Points : 343
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.
getupa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2006, 18h35   #5
Membre à l'essai
 
Inscription : janvier 2005
Messages : 60
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 60
Points : 20
Points : 20
Tu peux faire ça même si ce n'est pas le plus propre!

Code :
tail -1 `ls -t | head -1`
yakotey est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 09h28   #6
Membre confirmé
 
Inscription : juillet 2003
Messages : 400
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 400
Points : 202
Points : 202
bonjour ,

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

Code :
1
2
 
tail -1 `ls -t | head -1`
mais est ce que je peux donner confiance à cette commande plus que la commande cat
__________________
;-) cordialement
peppena est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2006, 12h42   #7
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
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 :
tail -1 `ls -t | head -1`
et dont une autre écriture plus "moderne" (compatible POSIX) serait :
Code :
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
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h03.


 
 
 
 
Partenaires

Hébergement Web