Bon, alors je ne parviens pas à comprendre le man de date, mais j'ai à peu près la solution.
man ls -> option --full-time
Code :
- --full-time
- List times in full, rather than using the standard
- abbreviation heuristics. The format is the same as
- date(1)'s default; it's not possible to change
- this, but you can extract out the date string with
- cut(1) and then pass the result to `date -d'.
|
En gros, il faut récupérer la date dans le ls de cette manière-là, et la transformer avec date en secondes. Le problème, c'est qu'il faut parvenir à trouver comment on entre une date valide, à partir de celle qu'on obtient avec l'option --full-time, pour la commande date.
J'explique (les sorties standards des commandes sont soulignées) :
~$ ls --full-time toto.txt
-rw-r--r-- 1 jak users 60225 mer avr 16 12:41:27 2003 toto.txt
~$ LC_ALL=en_US && ls --full-time toto.txt | awk '{print $8" "$7" "$10" "$9}'
16 Apr 2003 12:41:27
(Note : je force la sortie en anglais, parce que date -d n'aime pas une autre langue). Le résultat est passé à date -d, qu'on transforme en secondes :
~$ date -d "16 Apr 2003 12:41:27" +%s
1050489687
Et voilà, t'as ta commande, tout simplement :
Code :
- ~$ date -d "$(LC_ALL=en_US && ls --full-time toto.txt | awk '{print $8" "$7" "$10" "$9}')" +%s
|
Arf, zut ... ça marche pas avec plusieurs fichiers dans le ls. 'fin, c'est pas compliqué à changer, à partir de là.