2010-07-06 46 views
1

我执行此命令从我的所有网站文件中删除malwarm,并保留每个文件的备份,但执行后1分钟出现错误 /usr/local/bin/perl的:参数列表过长错误/ usr/local/bin/perl:参数列表太长

任何人都可以提出一个方法来避免这个错误,PS香港专业教育学院一个巨大的文件的安装:)

perl -e "s/<script.*PaBUTyjaZYg.*script>//g;" -pi.save $(find /home/ -type f -name '*php*') 

回答

12

使用xargs命令读取从标准输入和运行的文件名该命令多次传递尽可能多的文件名,因为它可以每次调用目标命令。

find /home/ -type f -name '*php*' -print0 | xargs -0 perl -e "s/<script.*PaBUTyjaZYg.*script>//g;" 

要查找的print0参数适用于xargs的-0参数,以确保文件名以空字符结尾。这可以防止带嵌入空格的文件名导致错误。

+1

xargs甚至有一个-n命令来控制每次调用它将传递的参数数量,这是我偶尔需要的。 – reinierpost 2010-07-06 07:45:57

+0

史蒂夫,完美,非常感谢, 另一个提示,请现在我需要删除所有以* .php.save – user172697 2010-07-06 07:53:08

+0

结尾的文件xargs只是为你建立一个命令列表,所以你只需要做查找并将它传递给xargs所以像这样的东西'find/home/-type f -name'* .php.save'-print0 | xargs -0 rm' – 2010-07-06 08:02:26