/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