findのprint0オプションはより少ない出力を提供しますか?

findのprint0オプションはより少ない出力を提供しますか?

マニュアルページやその他の参考資料を読みましたが、findとoptionの動作についてはまだ混乱しています-print0

-print0      This primary always evaluates to true.  It prints the pathname of
             the current file to standard output, followed by an ASCII NUL
             character (character code 0).

最初のコマンド:

$ find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" 2> /dev/null
/some/path//asdf199Intro-5kqlw.jpeg
/some/path/199intro-2jjaj.JPEG
/some/path/199intro-3.jpg
/some/path/wuer199intro-4.JPG
/some/path/xbzf199INTRO-1.jpg

2番目のコマンド:

$ find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" 2> /dev/null -print0
/some/path/136intro-3.jpg/some/path/wuer136intro-4.JPG/some/path/xbzf136INTRO-1.jpg

2番目のコマンドのファイル名がNULL文字で区切られているのがわかりますが、なぜ上記の5つではなく3つの出力が表示されますか?

答え1

あなたの最初の例

 find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg"

等しくない

 find /some/path/ -iname "*intro*jpeg" -o -iname "*intro*jpg" -print

それは等しい

 find /some/path/ \( -iname "*intro*jpeg" -o -iname "*intro*jpg" \) -print

式に以外のジョブが含まれている場合、暗黙的な-purge印刷は追加されなくなります。欲しい

find /some/path/ \( -iname "*intro*jpeg" -o -iname "*intro*jpg" \) -print0 2> /dev/null

3つのファイル名のみを取得するのは、そのファイル名が2番目の条件(作業を含む条件)と一致するためです。入力した内容の真の意味

find /some/path/ \( -iname "*intro*jpeg" \) -o \( -iname "*intro*jpg" -print0 \)

これにより、片面にのみ印刷される理由が明らかになることを願っています。

関連情報