On Monday 12 March 2007 12:40:51 Bogdan Botez wrote:
> On 3/12/07, Vali Dragnuta <[EMAIL PROTECTED]> wrote:
> > find si xargs.
> > Eventual rm la tot directorul.
>
> find fara xargs ... find direct cu exec. o sa il sparga pe xargs
> daca e asa cum zice el.
>
> parerea mea (tm).

Esti sigur ca stii la ce foloseste xargs ? Am sa dau paste dintr-un mail pe 
care i-l trimisesem recent altui colistas pe o tema similara:


<--- cut here --->
Sa facem o mica demonstratie:

1. find ... -exec

a) creem 10000 de fisiere intr-un director
$ for ((file=0;file<10000;file++)); do : > $file; done; echo "$(ls -1 | wc -l) 
files"
10000 files

b) le stergem folosind metoda "ineficienta" cu 'exec'
$ time find . -type f -exec rm -f '{}' \; ; echo "$(ls -1 | wc -l) files"

real    0m5.380s <<<
user    0m1.252s
sys     0m4.016s
0 files


2. find ... | xargs -i ... {}

a) recreem 10000 de fisiere in director
$ for ((file=0;file<10000;file++)); do : > $file; done; echo "$(ls -1 | wc -l) 
files"
10000 files

b) le stergem folosind metoda "claudiu"
$ time find . -type f | xargs -i rm -f '{}'; echo "$(ls -1 | wc -l) files"

real    0m5.156s <<<
user    0m1.000s
sys     0m4.056s
0 files


3. find ... | xargs ...

a) recreem 10000 de fisiere in director
$ for ((file=0;file<10000;file++)); do : > $file; done; echo "$(ls -1 | wc -l) 
files"
10000 files

b) le stergem folosind metoda "eficienta"
$ time find . -type f | xargs rm -f; echo "$(ls -1 | wc -l) files"

real    0m0.125s <<<
user    0m0.008s
sys     0m0.120s
0 files


Deci, pana la urma, care dintre cele 3 metode e mai eficienta ?

Raspunsul este absolut logic pentru ca in al treilea caz se executa _o 
singura_ instanta a comenzii 'rm' cu 10000 de argumente in loc de 10000 de 
instante 'rm' cu cate un argument. Bineinteles, daca erau mai multe fisiere 
(sau cu nume mai lungi) ar fi fost nevoie de mai multe instante 'rm', dar 
asta e problema xargs-ului, se descurca el.

</--- cut here --->


Mihai

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui