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