【问题标题】:find command and inverse regex查找命令和反正则表达式
【发布时间】:2012-05-13 07:12:49
【问题描述】:

我正在寻找一种表达此命令的方法,该命令排除所有可执行权限,但以“.EXE”结尾的文件除外

我正在尝试使用“find”命令和 -exec 来解决它,拜托。谢谢。

我尝试过的命令和其他版本的相同,都不起作用:

find . -type f -regex "[^\.EXE$]" -printf "%f\n" -exec chmod a-x {} +

感谢您的帮助,贝科。


已编辑:

为了找到正则表达式的“逆”,我在(更多)研究之后尝试了:

find . -type f ! -regex ".EXE$" -printf "%f\n" -exec chmod a-x {} +

但这也没有用。

【问题讨论】:

  • 如果你想使用 -regex 谓词,而不是 -name 谓词,你需要指定一个正则表达式,匹配整个名称:-regex ".*\.EXE$"

标签: regex find exec inverse


【解决方案1】:

如果find . -name "*.EXE" -exec chmod a-x {} + 不起作用,那么我只需在脚本中“查找 .-name ..-print”并编辑该脚本。

【讨论】:

    【解决方案2】:

    你的命令可以解决一些问题

    首先排除条件。要排除“*.EXE”,请说! -name "*.EXE"。 OP 中的条件接受所有包含不同于\.EX 的字母的文件。

    另一件事是,为了这个特定目的,只检查可执行文件是有意义的。这可以通过-executable 谓词来完成。

    其他的都还好。

    这是完整版

     find -executable -type f ! -name "*.EXE"  -exec chmod a-x {} +
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多