[gull] truc et astuce: Connaitre la date du dernier fichier d'un répertoire

Félix Hauri felix at f-hauri.ch
Fri Sep 10 14:25:02 CEST 2004


En paufinant un poil la présentation:

find pour parcourir tous les sous-répertoires
sort pour trier
head pour tirer le premier (dernier en date)
xargs pour printf,
printf pour formater l'argument de la commande date via xargs
date pour formater la date.

$ DIR=/home/user
$ find $DIR -type f -printf "%Ts\n" | \
    sort -rn | \
    head -n1 | \
    xargs -n1 printf "1970-1-1 UTC +%s secs\n"  | \
    env LANG=fr_CH date -f - +"%c"


J'aurais aussi bien pu:
$ DIR=/home/user
$ env LANG=fr_CH date -d 1970-1-1\ UTC\ +$(
    find $DIR -type f -printf "%Ts\n" | \
    sort -rn | \
    head -n1
                                            )\ secs +"%c"

Mai j'avais envie de le faire sans ``$(...)'' (ni backticks), càd sans fork,
ressortir cette vieille commande xargs...

Si le résultat est le même, le comportement diffère en cela que la première
méthode ne génère pas de wait-fork, que des pipes.

(Petites différences qui peuvent prendre de l'importances dans certaines
circonstances comme p.ex: traitement par lot de longue listes sur des
systèmes  multi-processeurs)

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch



More information about the gull mailing list