Le 18 novembre 2009 18:08, Félix Hauri <[email protected]> a écrit :
> On Wed, Nov 18, 2009 at 05:44:22PM +0100, Marc Mongenet wrote:
>> > De même que tu ne fera qu'un fork en tapant:
>> >
>> >   find . -type f -print0 | xargs -0 grep -iwZl "expr1" | xargs -0 grep 
>> > -iwl "expr2"
>> > ...
>> > que $(), mais dans tous les cas ``-print0|xargs -0'' t'affranchis des
>> > problèmes de noms de fichiers non-conventionnels).
>> >
>> >   find . -xdev -type f -exec grep -iwq expr1 {} \; -exec grep -iwq expr2 
>> > {} \; -print
>> >
>> > est la seule syntaxe qui fonctionnera de manière sûre, quelle que soit
>> > le taille des répertoires à parcourir (plus longue, mais efficace).
>> >
>>
>> Tiens, j'aurais juré que xargs permet de s'affranchir de la limite du
>> nombre de fichiers.
> En fait oui, mais à partir d'un certain volume, tu devras jouer avec 
> --max-procs,
> etc. La commande ``find'' est *la* moissonneuse-batteuse  qui te permetra 
> d'être
> fin (-maxdepth, -ipath, \( ... -a ... \), etc ..) dans ta  requête et absolu 
> dans
> la réponse.
>

Je ne connaissais l'option --max-procs de xargs, elle est très intéressante
pour paralléliser (maintenant que j'ai un multi-core)!

Mais bon, quel que soit la taille des répertoires à parcourir, xargs me paraît
fonctionner de manière sûre. La commande xargs n'a-t-elle pas été justement
créée pour rendre sûr le cas où les paramètres risques d'être trop long?
Ou bien est-ce autre chose qui m'échappe?

Marc Mongenet
_______________________________________________
gull mailing list
[email protected]
http://forum.linux-gull.ch/mailman/listinfo/gull

Répondre à