在Linux中删除目录中的所有可执行文件

DHa*_*ick 2 tar extension

在我递归 tar 目录之前,我希望能够删除所有可执行文件。在 Windows 中,我会简单地删除所有带有 .exe 扩展名的文件。而且我不能简单地删除所有具有可执行模式的文件,因为这也会删除 shell 脚本。那么有没有办法自动删除目录中的非shell脚本脚本文件?

Geo*_*itz 5

我假设你的意思是二进制文件?如果可执行文件的数量非常多,则此命令可能会因“file”和“echo”的命令行太长而失败。一个简单的例子:

find /bin -type f | xargs file | grep "ELF.*executable" | awk -F: '{print $1}' | xargs echo

如果在上面的示例中将“echo”替换为“rm”,这些文件将被删除。“grep”命令应防止库被删除(您可以在 /lib 上进行测试)。

(注意,我现在只能访问 FreeBSD,所以 linux 的“file”命令的输出可能会有所不同,从而改变你需要做的事情。)

这应该为您提供一个简单的模板来说明如何操作。您只需要确保知道要在“file”给出的输出中查找什么,并相应地 grep 。

当心。如果您在错误的目录上以 root 身份运行它,您可能会完全破坏您的系统。