[Shell UNIX] Date de modif d'un fichier

jebok Messages postés 371 Date d'inscription   Statut Membre -  
 PJM -
Bonjour,

Y a-t-il une commande (ksh) qui permette de récupérer la date de dernière modification d'un fichier (à part ls -lrt) ?

Merci

10 réponses

  1. simonishe
     
    Avez-vous essayé :

    date -r [fichier] '+%s' ?
    12
  2. tamani
     
    Sur le système AIX, c'est la commande istat.
    Ex. >istat nom_fichier (ou nom_répertoire)
    6
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    Il existe des outils relatifs aux propriétés des fichiers bien plus intéressants que ls.
    Le fait que l'on utilise ksh n'a d'ailleurs rien avoir avec la choucroute, ls est en général une commande externe.
    C'est plutot la qualité de la distribution qui est en jeu ici.
    Par exemple stat
    (sous Debian
    johand@horus:~$ dpkg -S $(which stat)
    coreutils: /usr/bin/stat)

    johand@horus:~$ stat -c "last access: %x last modification:%y" mbox
    last access: 2005-08-04 09:18:25.000000000 +0200 last modification:2005-06-23 10:23:42.000000000 +0200

    Lire man stat évidemment.

    Johan
    2
    1. jebok Messages postés 371 Date d'inscription   Statut Membre 51
       
      salut et merci pour ta reponse.
      Cependant, stat n'est pas une commande valide sur mon poste (AIX)...
      0
    2. cepourca > jebok Messages postés 371 Date d'inscription   Statut Membre
       
      c'est pour ca que quand on pose une question il y a une cas à remplire

      VOTRE CONFIGURATION
      0
    3. jebok Messages postés 371 Date d'inscription   Statut Membre 51 > cepourca
       
      Ah bon, c'est pour ça alors...
      0
    4. jisisv Messages postés 3678 Statut Modérateur 936 > cepourca
       
      Il ne faut pas jeter la pierre à 'jebok' su fait qu'il n'ait pas fourni la dernière révision et le patch ultime de son OS
      Le fait qu'il utilise AIX n'est pas un problème.
      La question reste ouverte.
      Ici on est dans le sub forum Unix , non ?

      Johan
      0
    5. jisisv Messages postés 3678 Statut Modérateur 936 > jebok Messages postés 371 Date d'inscription   Statut Membre
       
      Ben , essaye de voir s'il existe un code source portable/POSIX ...
      pour stat
      Google et SourceForge sont tes amis...
      Johan
      0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    man stat alors ;-))
    
           %X     Time of last access as seconds since Epoch
    
           %x     Time of last access
    
           %Y     Time of last modification as seconds since Epoch
    
           %y     Time of last modification
    
           %Z     Time of last change as seconds since Epoch
    
           %z     Time of last change
    
    En gros :
    stat -c '%X' fichier
    ;-))
    2
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Tim Hooks
     
    Sous AIX, la seule astuce que l'on m'a donnée c'est de passer par la commande "tar". Je l'ai complétée en utilisant la commande "time".

    Ci joint une fonction t'affichant l'horodatage complet d'un fichier :

    function timestamp
    {
    #DGX&GRE-20050823
    #set -x # Pour passer en mode trace

    File=$1

    if [ ! -f "${File}" -a ! -d "${File}" ]
    then
    echo "usage : ${0} filename" >&2
    return 1
    else
    touch -r "${File}" /tmp/T.timestamp.$$
    LANG=fr_FR # Pour passer en format francais
    # LANG=en_EN # Pour passer en format anglais
    tar -cf - /tmp/T.timestamp.$$ | tar -tvf - | awk '{print $5" "$6" "$8" "$7}'
    rm -f /tmp/T.timestamp.$$
    fi
    unset File
    return 0
    }
    2
  7. zzub Messages postés 5 Statut Membre 1
     
    merci jipicy, mais en fait, le man date de Sun 5.8 est vraiment pas complet... (j'ai une page avec rien de bien utile, je cherche mal??)

    en fait ce que je voulais, c'était récupérer la date de dernière modification d'un fichier sous format secondes depuis 1970, pour pouvoir l'utiliser avec Java et le format long...

    merci encore pour ton (votre) aide!
    1
  8. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Ben c'est bien ls -l qu'est ce qu'il te faut de plus ? En fait c'est pour faire quoi ?
    0
    1. jebok Messages postés 371 Date d'inscription   Statut Membre 51
       
      Oui, ls c'est très bien, mais le problème, c'est que je souhaite connaître la date de modif de plusieurs fichiers situés sur plusieurs machines.
      Et c'est là que ca se gâte car en fonction de la machine, la date est en anglais ou en francais donc il m'est impossible de faire un traitement automatique de la date...

      C'est pourquoi je recherche une commande "universelle" qui donne un résultat formaté que je pourrais ensuite retraité automatiquement (par un script).
      0
  9. zzub Messages postés 5 Statut Membre 1
     
    j'avais déjà essayé stat..

    mais :
    ksh: stat: not found

    j'ai l'impression d'avoir que la base de la base des commandes...
    0
  10. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    Est ce que tu as perl installé ?
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      Perl est native sur les système type UNIX
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      Sur Solaris, pas avant 2.6 ... quant à AIX ...

      le script suivant permet de récupérer les dates en secondes:

      perl -e '($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat($ARGV[0]); printf "atime=%ld, mtime=%ld, ctime=%ld\n", $atime, $mtime, $ctime' file_name

      le même simplifié

      perl -e '(@i) = stat($ARGV[0]); printf "atime=%ld, mtime=%ld, ctime=%ld\n", $i[8], $i[9], $i[10]' file_name
      0
      1. Mister_Toofer > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci, c'est exactement ce que je cherchais !
        Il faudrait que j'apprenne le perl, ça a l'air vachement puissant !
        0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    encore simplifié
    perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];print "$atime, $mtime, $ctime\n";' file_name
    --
    lami20j
    -1