我已经阅读了手册页和其他参考资料,但是仍然对find with -print0
option 的行为感到困惑。
-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
第二条命令:
$ 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
我可以看到第二个命令中的文件名是用空字符分隔的,但是为什么我得到3个输出而不是上面的5个?
1
从技术上讲,它们是null 终止的,不是null分隔的。(每个路径名(包括最后一个路径名)后都有一个NUL。)
—
cjm 2012年