/usr/bin/find; bezpecnost rm -rf

Zdenek Pytela letty na mrakoplas.phil.muni.cz
Středa Říjen 16 16:06:48 CEST 2002


Michal Ludvig píše:
> >(jen tak BTW, misto -exec bych doporucil xargs, kdyz uz find).
> 
> No to byste tomu dal... Rozdil je ten, ze -exec preda programu kazdy 
> soubor jako jeden argument, zatimco xargs to rozdeli po slovech (na 
> mezerach). Mozna by sel xargs presvedcit, aby bral co radka to argument, 
> ale implicitne to nedela. Dusledky jsou tyto:
> 
> $ cat args.sh
> while (test "x$1" != "x") do
>         echo "Arg: $1"
>         shift
> done
> 
> 1) vytvorim soubor s mezerama:
> $ touch "a b c"
> $ find
> .
> ./a b c
> 
> 2) spustim find s -exec:
> $ find -exec /tmp/args.sh {} \;
> Arg: .
> Arg: ./a b c
> => rm by bylo spusteno "bezpecne" ...
> 
> 3) spustim find s xargs:
> $ find | xargs /tmp/args.sh
> Arg: .
> Arg: ./a
> Arg: b
> Arg: c
> => nestacime se divit, co vsechno jsme si na serveru promazali ;-)
	xargs je na větším počtu výrazně efektivnější, jenom je třeba umět
ho použít, stejně jako find.

find . -type f -print0 | xargs -0 rm

Už to tady dlouho nebylo, ale tak před půl rokem dvakrát do měsíce.

-- 

--Zdeněk Pytela, <letty na mrakoplas.phil.muni.cz>



Další informace o konferenci Linux