[gull] truc et astuce: Utiliser les pipes: lister les fichiers d'un mois donné

Félix Hauri felix at f-hauri.ch
Sun Jul 27 18:51:42 CEST 2008


Ca f'sait longtemps...

Comme on parlait de pipes (fifo) ici, récement, voilà:

Le but est d'utiliser ``find'' pour lister tous les fichiers qui ont étés
modifiés pendant un mois donné. (J'utilise ``mmin'' plutot que ``mtime''
pour chercher de minuit à minuit et ne pas être à cheval sur le mois
précédant ou suivant, en fonction de l'heure qu'il est.)

$ mois="2007-12"
$ printf "now\n%s-01\n%s-01 00:00 +1 month\n" $mois $mois |
    date -f - +%s |
    xargs printf "n=%s/60-.5;s=%s/60;e=%s/60;n-s;n-e\n" |
    bc -l |
    xargs printf "find . -mmin -%.0f -mmin +%.0f -print0\n" |
    sh |
    xargs -0 /bin/ls -ltrd |
    less -S

 1. Je demande à ``date'' de m'afficher ``maintenant'', le début et
    la fin du mois recherché, en secondes.
 2. Avec printf je prépare une chaine de calcul pour en resortir
    le nombre de minutes entre le début et maintenant d'une part
    et entre la fin en maintenant.
 3. printf encore pour arondir les résultats de la commande ``bc'' et
    préparer la comande ``find'' adéquate, avec ``print0'' pour
    ``xargs -0'' qui permet de traiter avec des noms de fichiers
    comportants des espace et autres caractères farfellus.
 4. | sh ...
 5. et enfin ``ls -ltrd'' pour détailler et ordonner les réponses
    par dates.

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



More information about the gull mailing list