从目录中的所有文件中删除包含字符串的行

时间:2013-01-17 13:25:23

标签: linux string grep match

我的服务器已感染恶意软件。我已将Linux服务器升级到最新版本,并且没有新文件被感染,但我现在需要清理所有文件。

我可以找到执行以下操作的所有文件:

grep -H "gzinflate(base64_decode" /home/website/data/private/assets/ -R | cut -d: -f1

但是,我现在要删除每个文件中包含gzinflate(base64_decode的行。

2 个答案:

答案 0 :(得分:1)

我会使用sed -i '/gzinflate(base64_decode/d'删除文件中的匹配行:

... | xargs -I'{}' sed -i '/gzinflate(base64_decode/d' '{}'

注意:您确实希望使用grep -Rl而非grep -RH .. | cut -d: -f1,因为-l仅列出匹配的文件名,因此您无需管道cut

警告:你真的应该关注这里更深层次的安全问题,我现在根本不相信这个系统,你不知道什么后门是开放的,或者哪些文件可能仍然被感染。

答案 1 :(得分:0)

使用命令

获取这些文件后
 grep -H "gzinflate(base64_decode" /home/website/data/private/assets/ -R | cut -d: -f1

你逐个循环文件​​并使用      grep -v" gzinflate(base64_decode" file> newfile