应用场景
xargs
命令默认将空格作为分隔符,如果文件名中与空格,比如说一个名为shyn q
的文件。xargs
命令会识别为shyn
和q
两个参数,这样执行就会出问题。
find -print0和xargs -0搭配使用可以避免这个问题。
例如使用find -print0和xargs -0搭配删除shyn
和shyn q
两个文件
[root@localhost tmp]# find . -name "shyn*" -print0 |xargs -0 -t rm
rm ./shyn ./shyn q
[root@localhost tmp]#
find -print0
find -print0
表示在find的每一个结果之后加一个NULL
字符,而不是默认加一个换行符。find的默认在每一个结果后加一个'\n'
,所以输出结果是一行一行的。当使用了-print0
之后,就变成一行了
[root@localhost tmp]# find . -name "shyn*"
./shyn
./shyn q
[root@localhost tmp]# find . -name "shyn*" -print0
./shyn./shyn q
[root@localhost tmp]#
xargs -0
xargs -0
表示xargs用NULL来作为分隔符