|
|
|
|
Bonjour,
Voici mon problème : je souhaite connaitre une fonction unix pour afficher les statistiques d'un fichier sous Unix (SunOS). J'entends par là connaître sa date de dernière modification. Je connais la fonction "stat" en C (include stat.h) mais je veux utiliser un shell seul. Je connais aussi la fonction shell "ls -al" mais cela ne me convient pas non plus car le format d'affichage renvoyé n'est pas satisfaisant (Month Day hh:mi ou Month Day Year).
Donc existe-t-il une façon de faire en shell pour connaître la date de modification au format complet YYYYMMDD hhmiss ?
Merci
Je ne sais pas quelle est ta distribution. Debian contient l'outil ... stat
johand@horus:~$ touch brol johand@horus:~$ lastmod=$(stat -c '%y' brol |cut -b -19) johand@horus:~$ echo $lastmod 2006-02-16 00:31:12 doit faire ton bonheur. johand@horus:~$ dpkg -S $(which stat) coreutils: /usr/bin/stat --> package coreutils , donc pas de soucis avec Debian En faisant une rapide recherche , je vois qu'il existe un paquage coreutils pour Suze. Si tu utilises une distribution basée sur rpm, , stat est peut-être déjà disponible, ou un paquage 'coreutils' est sans doute disponible. Johan Gates gave you the windows. GNU gave us the whole house.(Alexandrin) |
J'ai essayé avec ls -l
|
Merci pour votre aide mamiemando et Dal.
|
L'option--full-time n'est pas dispo dans mon OS (SunOS 5.8).
|
Avec un script, awk, un test et date, on peut s'en sortir.
$ cat testdate.sh
#!/usr/local/bin/bash
ST="$1"
FICHIER=`echo $ST | awk '{ print $9 }'`
LADATE=`echo $ST | awk '{ print $6 " " $7 " " $8 }'`
if [ "$LADATE" != " " ]
then
echo -n "date de $FICHIER : "
if [ "`echo $LADATE | sed 's/\(.*\)\(:\)\(.*\)//'`" = "" ]
then
date -j -f "%b %d %R" "$LADATE" +"%F %T"
else
date -j -f "%b %d %Y" "$LADATE" +"%F"
fi
else
echo "$ST ne semble pas comporter de date"
fi
$ ls -al | sed 's/^\(.*\)$/\"\1\"/' | xargs -L 1 ./testdate.sh
La commande ci-dessus passe les lignes renvoyées par "ls -al" en argument entre guillements au script, et interprète les dates dans le format voulu dans tous les fichiers du répertoire courant. Celà fonctionne sur ma machine FreeBSD. Dal
|