Subtle; and what a caveat it is.

Thanks Paul and Otto for setting me straight.


Paul de Weerd wrote:
On Wed, Feb 09, 2011 at 12:25:09AM -0700, Clint Pachl wrote:
| In the caveats section it states the following:
|
|
|      Passing the output of find to other programs requires some care:
|
|            $ find . -name \*.jpg | xargs rm
|      or
|            $ rm `find . -name \*.jpg`
|
|      would, given files ``important .jpg'' and ``important'', remove
|      ``important''.  Use the -print0 or -exec primaries instead.
|
|
| Is this an error? The language indicates that ``important'' will be
| removed (and possibly ``important.jpg''; it's not clear) when
| executing both above commands. Is this correct?
|
| If it is correct, then I don't get what the caveat is. For example:
|
| $ touch important important.jpg
| $ find . -name \*.jpg | xargs rm
| $ ls
| important
|
| What does -print0 or -exec have to do with it?

There's a space in the first filename. "important .jpg".

Paul 'WEiRD' de Weerd

Reply via email to