删除目录下所有具有可执行权限的文件

删除目录下所有具有可执行权限的文件

我需要executable从目录中删除所有文件。我的目录包含一些配置文件和可执行文件文件,我需要删除所有executable不需要的文件。

为此我写了一个这样的命令:

ls -lp | grep -v / | awk 'match($0,"-**x*x*x",a);{print  a[1]}'| \
awk '{print $9}' | xargs rm -f

还有其他方法可以做到这一点吗?

我尝试过与find.它将列出所有其他子目录文件。我使用grep -v /, 来避免当前文件夹中的子目录。

答案1

您应该用于find此任务:

find . -type f -executable

将递归地显示当前用户可执行的文件。

将搜索限制为仅当前目录:

find . -maxdepth 1 -type f -executable

去除:

find . -maxdepth 1 -type f -executable -exec rm {} +

或者使用 GNU find

find . -maxdepth 1 -type f -executable -delete

作为旁注,如果您想查找任何用户可执行的文件,而不仅仅是当前用户(设置为常规执行权限位):

find . -type f -perm /111

相关内容