如何删除特定日期和扩展名的文件

如何删除特定日期和扩展名的文件

简短而甜蜜:我的一个托管订阅遭到了黑客攻击。

我运行了这个命令:find path-to-folder/ -mtime -7 -name "*.php" –print 这产生了大约 11 页的恶意代码,这些代码是在 1 月 30 日添加的。我不想单独删除所有这些项目,而是创建一个脚本或创建一个命令来执行一次删除任务。

我想完成以下任务之一:

  1. 创建一个脚本,该脚本将根据我输入链接的 .txt 文件的路径删除文件 - 或
  2. 一个命令可以根据特定日期范围从给定文件夹中删除所有名为“*.php”的文件?有点调整上面的命令 - 如果可能的话??

答案1

  1. Poisson Aerohead 的答案基本上很好,有一个小修改,我们最好使用 NULL 作为文件名分隔符。

  2. 要在一个命令中执行此操作,我们只需将 -print 更改为-删除。请注意 -delete 开关必须是最后一个开关,否则文件在与其他剩余开关进行检查之前就会被删除。

    查找文件夹路径/ -mtime -7 -name "*.php" –删除

答案2

同样简短而甜蜜:cat list | xargs rm

这假设您有一个名为“list”的文件,其中包含所有恶意 .php 文件,并且您位于包含 .php 文件的目录中(只是为了清楚起见,但我打赌您已经理解了这一点)。


如果任何文件名包含换行符,运行起来就会很危险,特别是因为您已经知道它们是由恶意对手构建的。如果您有文本文件中的文件名列表,您可以提前检查该列表,并确保没有任何行会删除您要保留的文件。

此外,如果攻击者设法将恶意 php 脚本获取到该主机上,这可能不是你最大的问题。我只是回答你提出的问题,@soubunmei 给出了更好的答案,因为她比我更了解 find 命令,但是这两个答案都不能保证安全。如果不清楚的话,我很抱歉,感谢@soubunmei 和@MichaelHomer 指出了我粗心的语言。如果您认为恶意者可能已经在主机上获得了更高的权限,您应该与网络安全专业人士联系。


我个人怀疑有一个很好的基于“扩展和日期”的方法来做到这一点,正如您所问的,有些人可能会觉得更优雅,但既然您已经有了列表,为什么不使用它呢?

我在名为“list”的文件上对此进行了测试,其中包含以下行:

file1
file2

这些文件在我的桌面上。它按预期工作。我强烈地建议您首先在一个小阶段上进行测试,看看它的表现如何,并备份目录任何大量文件删除。硬盘空间比程序员的时间便宜得多!

相关内容