At 2:27 PM +0200 12/8/07, Razvan RACASANU wrote: >Hi, > >I'm having some problems using find with -print0: it is returning >different files depending on the position of -print0. > >To illustrate this, suppose the current directory has 3 files: a.html, >a.css and a.js. From this directory I would like to list the file >names of all html and js files, but not those of css files. > >If I try this: > find . -type f -print0 -iname "*.html" -or -iname "*.js" | xargs -0 >the result looks like this: > ./a.html ./a.js ./a.css > >If I try this: > find . -print0 -type f -iname "*.html" -or -iname "*.js" | xargs -0 >the result looks like this: > . ./a.html ./a.css > >If I try this: > find . -type f -iname "*.html" -or -iname "*.js" -print0 | xargs -0 >the result looks like this: > ./a.js > >Can anybody shed some light on what am I doing wrong? Conditions in find that aren't joined with an explicit operation are joined with an implicit "and", so you effectively had '\( -type f -and -iname "*.html" \) -or -iname "*.js"', where the first -iname was bound to -type by the implicit -and and operator precedence. -- ____________________________________________________________________ TonyN.:' <mailto:tonynelson@xxxxxxxxxxxxxxxxx> ' <http://www.georgeanelson.com/>