je suis en train d'écrire un script de nettoyage de logs d'une appli
verbeuse.Malheureusement pour moi dans ce repertoire il n'y a pas que
des logs. La machine est une debian.
Donc je me suis dirigé vers find pour faire rm sur les vieux log
et gzip sur les moins vieux... J'ai regardé du coté de tmpreaper mais
je suis pas sûr que cela convienne à mon utilisation.
Mais je veux ajouter une regex sur mon find et c'est là que le bât
blesse... Je patauge à chaque fois que je touche aux regex à ça pourtant
cela me serait bien utile.
les fichiers de logs que je dois matcher sont du genre:
/application/logs/fichier.YYYY-MM-JJ.log
quand je fais ça j'ai bien des résultats:
ls -1 /application/logs/ | egrep '\.[0-9]{4}\-[0-9]{2}\-[0-9]{2}\.'
par contre:
avec le find j'ai rien:
find /application/logs/ -regextype egrep -regex
'\.[0-9]{4}\-[0-9]{2}\-[0-9]{2}\.' -print
Je sais bien que le regextype par defaut est emacs et je trouve pas bcp
de docs dessus donc je me suis dirigé vers le type egrep que je peux
tester.
Merci à jacques et Stephane pour l'histoire du ^ $ implicite.
Au passage, sur ma machine debian, find accepte l'argument -regextype egrep mais la regex ne fonctionne pas. Si je remplace egrep par posix-egrep par contre, ça marche.
PS:Je peux fournir mon script, si certains sont intéressés...
Stephane CHAZELAS a écrit :
2009-01-23, 19:30(+01), chksum:
[...]
ls -1 /application/logs/ | egrep '.[0-9]{4}-[0-9]{2}-[0-9]{2}.'
par contre:
avec le find j'ai rien:
find /application/logs/ -regextype egrep -regex
'.[0-9]{4}-[0-9]{2}-[0-9]{2}.' -print
[...]
Le -regex du GNU find matche le chemin complet du fichier et il
y a un ^ et $ implicites. Donc, tu dois faire:
Merci à jacques et Stephane pour l'histoire du ^ $ implicite.
Au passage, sur ma machine debian, find accepte l'argument
-regextype egrep mais la regex ne fonctionne pas. Si je remplace
egrep par posix-egrep par contre, ça marche.
PS:Je peux fournir mon script, si certains sont intéressés...
Merci à jacques et Stephane pour l'histoire du ^ $ implicite.
Au passage, sur ma machine debian, find accepte l'argument -regextype egrep mais la regex ne fonctionne pas. Si je remplace egrep par posix-egrep par contre, ça marche.
PS:Je peux fournir mon script, si certains sont intéressés...
Olivier Miakinen
Le 28/01/2009 11:16, chksum a écrit :
[ option -regex du « GNU find » ] find /application/logs/ -regextype egrep -regex '.*.[0-9]{4}-[0-9]{2}-[0-9]{2}.[^/]*'
Au passage, sur ma machine debian, find accepte l'argument -regextype egrep mais la regex ne fonctionne pas. Si je remplace egrep par posix-egrep par contre, ça marche.
Peut-être est-ce la syntaxe {4} ou {2} qui n'est pas reconnue par le type egrep sur Debian ? Je fais suivre à tout hasard vers le groupe fr.comp.lang.regexp au cas où certains connaîtraient l'ensemble des différences entre la commande find de GNU et celle de Debian.
Le 28/01/2009 11:16, chksum a écrit :
[ option -regex du « GNU find » ]
find /application/logs/ -regextype egrep -regex
'.*.[0-9]{4}-[0-9]{2}-[0-9]{2}.[^/]*'
Au passage, sur ma machine debian, find accepte l'argument
-regextype egrep mais la regex ne fonctionne pas. Si je remplace
egrep par posix-egrep par contre, ça marche.
Peut-être est-ce la syntaxe {4} ou {2} qui n'est pas reconnue par le
type egrep sur Debian ? Je fais suivre à tout hasard vers le groupe
fr.comp.lang.regexp au cas où certains connaîtraient l'ensemble des
différences entre la commande find de GNU et celle de Debian.
[ option -regex du « GNU find » ] find /application/logs/ -regextype egrep -regex '.*.[0-9]{4}-[0-9]{2}-[0-9]{2}.[^/]*'
Au passage, sur ma machine debian, find accepte l'argument -regextype egrep mais la regex ne fonctionne pas. Si je remplace egrep par posix-egrep par contre, ça marche.
Peut-être est-ce la syntaxe {4} ou {2} qui n'est pas reconnue par le type egrep sur Debian ? Je fais suivre à tout hasard vers le groupe fr.comp.lang.regexp au cas où certains connaîtraient l'ensemble des différences entre la commande find de GNU et celle de Debian.