[Unix] Récupérer le dernier fichier créé

Résolu
Trezeg Messages postés 81 Statut Membre -  
 Fooz -
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
Configuration: Sun OS 5.9

5 réponses

  1. gorkimat Messages postés 71 Statut Membre 9
     
    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
    10
    1. Fooz
       
      Thx :)
      0
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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

    5
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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)

    0
  4. gorkimat Messages postés 71 Statut Membre 9
     
    Salut,

    Effectivement, je ne connaissait pas cette option. On apprend toujours avec UNIX ;-)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Trezeg Messages postés 81 Statut Membre 2
     
    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
    0