[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