find with -print0 returns incorrect results
John Summerfield
debian at herakles.homelinux.org
Mon Dec 10 22:52:07 UTC 2007
Razvan RACASANU wrote:
> Thanks for your answers, but I still have a question about this.
>
> So, if I understand correctly, -print0 is considered as just another
> test (just like -iname) that is evaluated for each file according to
> operator precedence. In this case, since -print0 always returns true,
> shouldn't the following commands be equivalent:
Think about the order of evaluation.
>
> find . -type f -and -print0 -and \( -iname '*.html' -or -iname
> '*.js' \) | xargs -0
> and
> find . -type f -and \( -iname '*.html' -or -iname '*.js' \) -and
> -print0 | xargs -0
>
> The first one outputs:
> ./a.js ./a.css ./a.html
> The second one outputs:
> ./a.js ./a.html
GNU find has an implied print at the end, iff there has been no other
print 'test." Not all versions of find does this.
In this context, by "print" I include any test that prints.
--
Cheers
John
-- spambait
1aaaaaaa at coco.merseine.nu Z1aaaaaaa at coco.merseine.nu
-- Advice
http://webfoot.com/advice/email.top.php
http://www.catb.org/~esr/faqs/smart-questions.html
http://support.microsoft.com/kb/555375
You cannot reply off-list:-)
More information about the users
mailing list