关于xargs的小BUG

suse@linux-337q:~/downs> find . -name ‘.txt’
./d.txt
./ 新建 文件夹 /m.txt
suse@linux-337q:~/downs> find . -name '
.txt’ | xargs rm -rf
suse@linux-337q:~/downs> find . -name ‘*.txt’
./ 新建 文件夹 /m.txt

为什么删不掉 m.txt? 有问题吧。

我换一种方法:
suse@linux-337q:~/downs> find . -name '.txt’ -exec rm -rf {} ;
suse@linux-337q:~/downs> find . -name '
.txt’
suse@linux-337q:~/downs>
这回好了,为什么是这样呢?好像只有在带空格的中文文件夹中才会有此问题。

当有许多包含空格、圆括号和其他“禁用”字符的文件时, xargs 处理起来会比较困难。幸运的是,在 Linux 下 find 命令有一个选项 -print0,它以 null 字符分隔输出的文件名而不是用新行字符。tar 和 xargs 等命令有 -0(或 --null)选项,这使它们能够理解这种形式的参数。