Comment obtenir la date de modification du fichier dans Unix (y compris l’année)?

Je recherche une commande pour obtenir la date de modification du fichier dans Unix, y compris le champ année sans utiliser stat car nous utilisons SunOS 5.10.

Actuellement quand j’utilise

 ls -lrt A.sh 

nous obtenons les détails suivants:

 -rw-r--r-- 1 dev dev 593 Jan 1 02:18 A.sh 

Comment puis-je obtenir l’année?

Voici une manière un peu hackée:

 truss -t lstat64 -v lstat64 /bin/ls A.sh 2>&1 | nawk '/mt =/ {printf("%s %2s %s %s %s\n",$3,$4,$5,$6,$7);}' 

Comme il s’agit d’un site de programmation Q, je mettrais simplement en œuvre un petit programme C qui extrait les informations à l’aide de l’appel de stat .

Il vous donne une struct stat qui contient les valeurs time_t pour les temps d’access, de modification et de changement d’état.

Vous pouvez ensuite utiliser localtime pour en faire une struct tm et extraire les champs appropriés pour la sortie (de la mémoire, tm_year + 1900 , tm_mon + 1 et tm_mday plus les temps si vous en avez besoin).

Vous pouvez essayer ceci,

 perl -MPOSIX -le 'print strftime "%d %b %Y %H:%M ".$_, localtime((lstat)[9]) for @ARGV' a.sh 

ls a l’option --time-style :

 --time-style=STYLE with -l, show times using style STYLE: full-iso, long-iso, iso, locale, or +FORMAT; FORMAT is inter‐ preted like in 'date'; if FORMAT is FORMAT1FORMAT2, then FORMAT1 applies to non-recent files and FORMAT2 to recent files; if STYLE is prefixed with 'posix-', STYLE takes effect only outside the POSIX locale 

qui contient des formats préchargés tels que long-iso

 ls -lrt --time-style=long-iso A.sh 
 -rw-r--r-- 1 dev dev 593 2014-01-02 02:18 A.sh 

ou vous pouvez définir votre propre basé sur les formats de date

 ls -lrt --time-style="+%Y-%m-%d %a %T" A.sh 
 -rw-r--r-- 1 dev dev 593 2014-01-02 Tue 02:18:00 A.sh