[Shell UNIX] Date de modif d'un fichier
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
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' ? -
-
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).
-
-
ModérateurIl 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-
-
-
@cepourcaAh bon, c'est pour ça alors...
-
Modérateur@cepourcaIl 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 -
Modérateur@jebokBen , essaye de voir s'il existe un code source portable/POSIX ...
pour stat
Google et SourceForge sont tes amis...
Johan
-
-
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! -
Modérateurman 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 changeEn gros :stat -c '%X' fichier
;-))
-
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... -
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
} -
ContributeurEst ce que tu as perl installé ?
-
-
ContributeurSur 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 -
@dubcekMerci, c'est exactement ce que je cherchais !
Il faudrait que j'apprenne le perl, ça a l'air vachement puissant !
-
-
Modérateurencore simplifié
perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];print "$atime, $mtime, $ctime\n";' file_name
--
lami20j -
Sur le système AIX, c'est la commande istat.
Ex. >istat nom_fichier (ou nom_répertoire)