Steffen Nurpmeso wrote in <20250814212707.6XsmTpHW@steffen%sdaoden.eu>: |RVP wrote in | <4a495fb2-150d-67b7-cbbc-8a799868d...@sdf.org>: ||On Thu, 14 Aug 2025, Rocky Hotas wrote: || ||> I'm trying to use find(1) in a POSIX way to list all the files (not ||> directories) with at least one execute bit set. ||> [...] ||> find /target_directory/ -type f -perm -001 -or -type f -perm -010 \ ||> -or -type f -perm -100 ||> ||> Is there a more compact, but still POSIX, way to obtain the same ||> result with NetBSD's find(1)? || ||If not sticking to pure find(1): || ||Compact, but slow, and filenames cannot contain (')--single quotes. || ||$ find /dir/ -type f -exec sh -c "test -x '{}' && echo '{}'" \; || ||Slightly faster, and should handle weird filenames: || ||$ find /dir/ -type f -exec sh -c 'for f; do test -x "$f" && echo "$f"; \ ||done' xxx {} + || ||Note the `xxx' above. It, or some other string, is reqd. there to supply \ ||a `$0' ||for the shell. Of course, you would usually put all this in a shell \ ||script, then ||`-exec' that :). | |fwiw GNU find(1) has | | -perm /mode | Any of the permission bits | -perm -mode | All of the permission bits | |which then is pretty cool
of course not POSIX as you have asked; but .. dependent upon the task it might still be worth doing something like find . -perm /0111 --help or something, you know, and then go the one or other route?! (And/or create a function which actually acts etc etc etc.) Out of interest i just now looked, OpenBSD and NetBSD do not support + or /, FreeBSD documents + but not /, busybox and GNU find support + and /, but the former only documents + and the latter obsoleted + in favour of /, but still supports it. So lots of work all over the place! ||-RVP | --End of <4a495fb2-150d-67b7-cbbc-8a799868d...@sdf.org> --End of <20250814212707.6XsmTpHW@steffen%sdaoden.eu> --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)