I've looking for a way to express this command that excludes all executable perms except for those files ended in ".EXE"
I've trying to solve it using the "find" command and -exec, please. Thanks.
The command I tryed, and other versions of the same, does not work:
find . -type f -regex "[^\.EXE$]" -printf "%f\n" -exec chmod a-x {} +
Thanks any help, Beco.
Edited:
To find a "inverse" of a regular expression, I tried after (more) research:
find . -type f ! -regex ".EXE$" -printf "%f\n" -exec chmod a-x {} +
But this also did not work.
There are few things that can be fixed with your command
First the exclusion condition. To exclude "*.EXE" say ! -name "*.EXE"
. The condition in the OP takes all files that contain a letter different from \
,.
, E
or X
.
The other thing is that for this specific purpose it makes sense to check only executable files. This can be accomplished with the -executable
predicate.
The rest of it seems ok.
Here is a complete version
find -executable -type f ! -name "*.EXE" -exec chmod a-x {} +