2010-07-06 112 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