有人可以回答下面的命令在每种情况下创建了多少个进程,因为我不理解它:
以下三个命令具有大致相同的效果:
rm $(find . -type f -name '*.o')
find . -type f -name '*.o' | xargs rm
find . -type f -name '*.o' -exec rm {} \;
答案 0 :(得分:4)
rm
,另一个用于find
。find
,另一代代表xargs
,还有一个或多个rm
。 xargs
将读取标准输入,如果它读取的行数超过可作为参数传递给程序的行(有一个名为ARG_MAX
的最大值)。find
,另一个用于.o
rm
的每个文件。在我看来,选项2是最好的,因为它正确处理最大参数限制并且不会产生太多进程。但是,我更喜欢这样使用它(使用GNU find和xargs):
find . -type f -name '*.o' -print0 | xargs -0 rm
这会使用\0
而不是换行符终止每个文件名,因为UNIX中的文件名可以合法地包含换行符。这也正确地处理文件名中的空格(更常见)。