2012-05-03 234 views
3

我一直在寻找一种方式来表达这个命令排除除了那些文件“.EXE”find命令和逆正则表达式

结束我已经尝试使用‘查找’来解决它所有可执行烫发命令和-exec,请。谢谢。

我tryed的命令,和相同的其他版本,不工作:

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

感谢任何帮助,贝乔。


编辑:

要找到一个正则表达式的 “逆”,我后(多)的研究尝试:

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

但是,这也没有工作。

+1

如果你想使用-regex谓语,而不是-name谓词,你需要指定一个正则表达式,整个名称相匹配的完整版本:-regex” * \ .EXE $“ –

+0

感谢那个正则表达式。 –

回答

4

有几件事情可以用您的命令修复

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

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

其余的似乎没问题。

这里是

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

伟大的提示!谢谢! –

-1

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