3
有人能回答多少进程在每种情况下下面的命令创建为我不理解:解释创建了多少个进程?
以下三个命令有大致相同的效果:
rm $(find . -type f -name '*.o')
find . -type f -name '*.o' | xargs rm
find . -type f -name '*.o' -exec rm {} \;
有人能回答多少进程在每种情况下下面的命令创建为我不理解:解释创建了多少个进程?
以下三个命令有大致相同的效果:
rm $(find . -type f -name '*.o')
find . -type f -name '*.o' | xargs rm
find . -type f -name '*.o' -exec rm {} \;
rm
,另一个为find
。find
,另一代表xargs
,以及一个或多个rm
。 xargs
将读取标准输入,并且读取的行数多于可作为参数传递给程序的行数(最大值为ARG_MAX
)。find
,另一个为.o
,结尾为rm
。在我看来,选项2是最好的,因为它正确处理了最大参数限制,并且不会产生太多的过程。不过,我更喜欢使用像这样(与GNU查找和xargs的):
find . -type f -name '*.o' -print0 | xargs -0 rm
这将终止与\0
,而不是一个换行符每个文件名,因为在UNIX文件名可以合法包含换行符。这也正确处理文件名中的空格(更常见)。
我们还有'find -exec rm \ +'这在概念上就像'xargs',但是保存了一个进程。 – tripleee 2012-01-15 18:43:37
怎么样'找到。 -type f -name'* .o'-delete'?这不好吗? – 2012-01-15 19:31:01
@Jaypal:是的,它可以在一个过程中完成所有工作。 – 2012-01-15 20:56:33