Menu

[Unix] Récupérer le dernier fichier créé [Résolu/Fermé]

Trezeg 73 Messages postés mercredi 20 décembre 2006Date d'inscription 24 novembre 2010 Dernière intervention - 13 avril 2007 à 16:17 - Dernière réponse :  Fooz
- 14 mai 2018 à 13:47
Bonjour,
J'aimerais savoir s'il était possible de récupérer le dernier fichier créé dans un répertoire. Je sais que la commande ll -rt permet de lister les fichiers par ancienneté mais j'aimerais implémenter cette commande d'une manière particulière. Voici le contenu de mon répertoire:
chezmoi$ ll
-rw-rw-rw 1 batch batch 932 Apr 13 13:20 toto.LLDKDWKDLE 
-rw-rw-rw 1 batch batch 932 Apr 13 13:21 toto.LKJLDSKJWT
Et dans un shell, je veux initialiser une variable de la façon suivante:
lastFileRows=`grep 'rows copied' toto. (=> le plus récent) | nawk '{print $1}'`
Merci de votre aide.

Trez
Afficher la suite 

6 réponses

Meilleure réponse
gorkimat 70 Messages postés dimanche 1 avril 2007Date d'inscription 1 mars 2012 Dernière intervention - 13 avril 2007 à 16:25
10
Merci
Bonjour,

Voici un petit bout de code qui te retournera la nom du fichier le plus recent:

ll -rt | tail -1 | awk '{print $9}'

A plus

Gorki

Merci gorkimat 10

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 22541 internautes ce mois-ci

lami20j 21513 Messages postés jeudi 4 novembre 2004Date d'inscriptionContributeur sécuritéStatut 8 octobre 2012 Dernière intervention - 13 avril 2007 à 17:29
4
Merci
Salut,

pour quoi pas avec l'option -1 ( le chiffre "un")
le dernier fichier crée c'est le plus récent
en ce cas on peut écrire tout simplement
ls -1t | head -1

jipicy 43484 Messages postés jeudi 28 août 2003Date d'inscriptionModérateurStatut 17 mars 2018 Dernière intervention - 13 avril 2007 à 17:20
0
Merci
Salut,

Si j'ai bien compris, tu veux filtrer les fichiers "toto.*" contenant la chaîne "rows copied" et affecter à la variable "lastFileRows" le fichier le plus récent d'entre eux, j'ai bon ?
lastFileRows=$(for i in $(ls -rt toto.*); do grep -l "rows copied" "$i"; done | head -1)
;-)

Edit :

Y'a plus simple :
lastFileRows=$(grep -l 'rows copied' $(ls -rt toto.*) | head -1)

gorkimat 70 Messages postés dimanche 1 avril 2007Date d'inscription 1 mars 2012 Dernière intervention - 13 avril 2007 à 17:58
0
Merci
Salut,

Effectivement, je ne connaissait pas cette option. On apprend toujours avec UNIX ;-)
Trezeg 73 Messages postés mercredi 20 décembre 2006Date d'inscription 24 novembre 2010 Dernière intervention - 16 avril 2007 à 10:12
0
Merci
Hello,

J'ai utilisé un truc proche de la solution de gorkimat et ca marche assez bien:
outputFile=`ll -rt /soft/Control-M/ctmag_u/ctm/sysout/$1.* | tail -1 | awk '{print $9}'`
avec $1 mon fichier passé en paramètre. Puis:
outputCount=`grep 'rows copied' $outputFile | nawk '{print $1}'`
Je sais que c'est "compactable" mais cette syntaxe me permet de mieux comprendre le cheminement de mon shell.
En tout cas merci à tous ;-)

Trez