[Shell UNIX] Date de modif d'un fichier [Fermé]

Signaler
Messages postés
375
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
23 octobre 2007
-
 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

Avez-vous essayé :

date -r [fichier] '+%s' ?
12
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86916 internautes nous ont dit merci ce mois-ci

Sur le système AIX, c'est la commande istat.
Ex. >istat nom_fichier (ou nom_répertoire)
Messages postés
3644
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
879
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
Messages postés
3644
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
879 >
Messages postés
375
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
23 octobre 2007

Ben , essaye de voir s'il existe un code source portable/POSIX ...
pour stat
Google et SourceForge sont tes amis...
Johan
>
Messages postés
3644
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017

Tu peux essayer avec une commande de ce genre. C'est ce que je fais depuis un AIX sur 2 linux différents qui me renvoyent des formattages différents de date

ls -al /pse/versions_etats | sed 's/ * / /g' | cut -d ' ' -f 6-8
Messages postés
5
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007
1 >
Messages postés
3644
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017

Salut a tous

j'aimerais savoir s'il est possible de récupérer une date au format "secondes depuis1970", et pas jour mois année

Merci!
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 729 >
Messages postés
5
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007

Salut,

man date !
date '+%s'
;-)
Super !
ça marche très bien. Merci
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 729
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
;-))
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
}
Messages postés
5
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007
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!
Messages postés
29229
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
11 mai 2020
6 858
Ben c'est bien ls -l qu'est ce qu'il te faut de plus ? En fait c'est pour faire quoi ?
Messages postés
375
Date d'inscription
lundi 16 mai 2005
Statut
Membre
Dernière intervention
23 octobre 2007
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).
Messages postés
5
Date d'inscription
vendredi 30 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007
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...
Messages postés
18118
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mai 2020
4 843
Est ce que tu as perl installé ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 468
Salut,

Perl est native sur les système type UNIX
Messages postés
18118
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mai 2020
4 843
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
>
Messages postés
18118
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
12 mai 2020

Merci, c'est exactement ce que je cherchais !
Il faudrait que j'apprenne le perl, ça a l'air vachement puissant !
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 468
encore simplifié
perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];print "$atime, $mtime, $ctime\n";' file_name
--
lami20j