On Tue, Sep 14, 2010 at 01:48:59AM +0200, Ingo Schwarze wrote:
> Hi,
> 
> I like these two and have tweaked them a bit.
> 
> Joachim Schipper wrote on Mon, Sep 13, 2010 at 02:49:58PM +0200:
> 
> > The first diff changes the last example in find(1). This diff:
> > - makes it clear that it, in fact, works on all files *under* (not just
> >   "in") the current working directory;
> > - adds handling of *.gif files to illustrate ordering;
> > - changes to -print0 | xargs -0r to illustrate proper form.
> > 
> > The second diff is relative to the first diff, and adds the following
> > warning to CAVEATS:
> [...]
> 
> My tweaks:
>  * regarding -print:
>    "should not" is not nice in manuals, let's say "is dangerous".
>  * regarding -print0:
>    Point to xargs(1) -0, it nicely fits on the same line.
>  * EXAMPLES:
>    "remove all *.jpg and *.gif files" (not "or")
>    Also, give the pointer to CAVEATS in a more concise form.
>  * CAVEATS:
>    Using the newline might mislead people to underestimate the danger:
>    Who ever uses newlines in filenames?
>    Better use the space character for demonstration purposes.
>    And don't recommend -X, it is rarely doing the job, if at all.
> 
> > This is already addressed in the man page (e.g. under the description of
> > -print0 or -X), but many people (including the EXAMPLES) get it wrong;
> > hopefully the above warning (and the references from the description of
> > -print and the EXAMPLES section) prevents some people from making this
> > mistake.
> 
> Even if this introduces some more redundancy, self-contained descriptions
> for all options (-X, -print, and -print0) are good, and EXAMPLES and
> CAVEATS are good places to help inexperienced users, even using some
> verbosity if need be, so i don't think this is overdone.
> 
> OK to commit?
> 

no.

if we should not recommend -X, then that bit of text should be corrected
and then, in one place, we describe the issues.

and we already have an example which does "and" and grouping.

did you see my mail on this subject?

jmc

> 
> Index: find.1
> ===================================================================
> RCS file: /cvs/src/usr.bin/find/find.1,v
> retrieving revision 1.78
> diff -u -r1.78 find.1
> --- find.1    15 Jul 2010 20:51:38 -0000      1.78
> +++ find.1    13 Sep 2010 23:35:00 -0000
> @@ -383,10 +383,17 @@
>  by a newline
>  .Pq Ql \en
>  character.
> +This is dangerous in conjunction with
> +.Xr xargs 1 ,
> +see
> +.Sx CAVEATS .
>  .It Ic -print0
>  This primary always evaluates to true.
>  It prints the pathname of the current file to standard output, followed
> -by a null character.
> +by a null character, suitable for use with the
> +.Fl 0
> +option to
> +.Xr xargs 1 .
>  .It Ic -prune
>  This primary always evaluates to true.
>  It causes
> @@ -525,11 +532,13 @@
>  .Pp
>  .Dl "$ find /usr/src -path /usr/src/gnu -prune -or -name \e*.[0-9]"
>  .Pp
> -Find and remove all *.jpg files in the current working directory:
> +Find and remove all *.jpg and *.gif files under the current working
> +directory
> +.Pq see also Sx CAVEATS :
>  .Pp
> -.Dl "$ find . -name \e*.jpg -exec rm {} \e;"
> +.Dl "$ find . \e( -name \e*.jpg -o -name \e*.gif \e) -exec rm {} \e;
>  or
> -.Dl "$ find . -name \e*.jpg | xargs rm"
> +.Dl "$ find . \e( -name \e*.jpg -o -name \e*.gif \e) -print0 | xargs -0r rm"
>  .Sh SEE ALSO
>  .Xr chflags 1 ,
>  .Xr chmod 1 ,
> @@ -637,6 +646,24 @@
>  and
>  .Ql \&;
>  may have to be escaped from the shell.
> +.Pp
> +Using
> +.Nm
> +in combination with
> +.Xr xargs 1
> +requires some care:
> +.Pp
> +.Dl "$ find . -name \e*.jpg | xargs rm"
> +.Pp
> +would, given a file named
> +.Pa "important .jpg"
> +(with a space character in the middle), remove
> +.Pa important .
> +Use the
> +.Ic -print0
> +or
> +.Ic -exec
> +primaries instead.
>  .Pp
>  As there is no delimiter separating options and file names or file
>  names and the

Reply via email to