Question

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.

Was it helpful?

Solution

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 {} +

OTHER TIPS

if find . -name "*.EXE" -exec chmod a-x {} + doesn't work, then I'd just "find . -name .. -print" into a script and edit the script.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top