这样更快吗?
find /tmp -name core -type f | xargs /bin/rm -f而不是这样做的:
find /tmp -name core -type f -exec /bin/rm -f {} \;那么,使用xargs会提高总体速度吗?
(我从xargs的手册页得到了这个例子。)
发布于 2011-11-13 12:30:10
正如Mat已经说过的那样,在一般情况下,您应该意识到一个事实,即每个字节都可以位于文件名中,除了NUL字符(因为它分隔字符串的结尾)和/ (因为它删除路径元素)。因此,您的xargs示例应该是(在GNU系统上)
find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f等效的是查找中的-exec,但使用的是+而不是\;。
find /tmp -name core -type f -exec /bin/rm -f {} +这个版本并不是为每个文件调用/bin/rm,而是像xargs一样打包参数。
发布于 2011-11-13 11:15:40
第一个版本可能比第二个版本更快:xargs将一次将多个文件传递给rm,但是find将在每个文件中调用rm一次。
因此,使用第一个版本时,可以减少叉/exec调用。
(如果只有一个匹配或者根本没有匹配,那么第二个版本可能会更快:不需要执行xargs本身。)
但我不认为这是一个好的标准来选择一个或另一个。在这种特殊情况下,您不必担心奇怪的文件名,但通常您应该这样做。第二个版本更安全,所以通常您应该使用它。
https://unix.stackexchange.com/questions/24522
复制相似问题