如何在 Ubuntu 中删除所有 txt 文件的执行权限

如何在 Ubuntu 中删除所有 txt 文件的执行权限

我有一个Ubuntu 16.04 64 位桌面上,我之前安装过wine它,后来又删除了它。现在当我尝试打开txt 文件nautilus很多情况下,我得到了一个对话盒说文件是可执行文件我是否应该跑步或者展示我对这种行为感到恼火,并想撤销执行这些文件的权限。如果有人能告诉我如何做到这一点,那将会很有帮助。

谢谢

答案1

.txt要从主目录及其所有子目录中的所有文件中删除执行位,请尝试:

find "$HOME" -type f -executable -name '*.txt' -execdir chmod a-x {} +

怎么运行的:

  • find "$HOME"

    这将开始find从你的主目录开始查找文件,并递归包括所有子目录

  • -type f

    这告诉find只查找常规文件,而不是目录。

    将搜索限制在常规文件中非常重要,因为如果我们从目录中删除执行位,该目录将变得无法访问。

  • -executable

    这告诉find仅查找设置了可执行位的文件。

  • -name '*.txt'

    这告诉find仅查找名称与 glob 匹配的文件*.txt

  • -execdir chmod a-x {} +

    这告诉对找到的任何此类文件find执行操作。chmod a-x

    我们使用-execdir,而不是-exec,因为如果在此命令运行时目录名称发生变化,它会更可靠。

    +表单末尾的指示-execdir chmod a-x {} +如果可能的话,通过在每个命令行上放置多个文件find来运行更少的实例。chmodchmod

答案2

find . -name "*.txt" -exec chmod a-x {} \;

find命令是不言自明的。它根据给定的参数查找文件。用法:find location comparison-criteria search term

find . -name "*.txt" -exec chmod a-x {} \;这里的 . 表示根目录,-name "*.txt"表示查找所有名称中包含“.txt”的文件。-exec chmod a-x {} \;表示chmod对所有匹配的文件执行命令。

相关内容