NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Find all files with at least one execute bit set
Valery Ushakov wrote in
<aKBZeuK348wpjChG%snips.stderr.spb.ru@localhost>:
|On Thu, Aug 14, 2025 at 12:15:25 +0200, Rocky Hotas wrote:
|
|> It seems to work, but it's somewhat cumbersome. In GNU find, there
|> is a single dedicated option, `-executable'.
|
|-executable is, like test -x, an access(2) test. The simple bitmask
|test, as has already been mentioned upthread, is -perm /0111
|
|I stumble into this from time to time, when I need it and by habit
|type the deprecated old syntax -perm +mode which, apparently, hasn't
|been supported for 20 years now.
|
|Adding /mode to netbsd find(1) would be nice, I think. (And I just
|auto-typed that as +mode first, and had to go back and correct
|it... *sigh*).
dunno if this is it, untested.
|-uwe
--End of <aKBZeuK348wpjChG%snips.stderr.spb.ru@localhost>
diff -Napru '--color=auto' '--palette=rs=0:hd=1:ad=38;5;42:de=38;5;203:ln=36' y.orig/find.h y/find.h
--- y.orig/find.h 2025-08-16 17:47:30.785938602 +0200
+++ y/find.h 2025-08-16 17:48:14.695937766 +0200
@@ -62,6 +62,7 @@ typedef struct _plandata {
#define F_MTFLAG 1 /* fstype */
#define F_MTTYPE 2
#define F_ATLEAST 1 /* perm */
+#define F_ANY 2
int flags; /* private flags */
enum ntype type; /* plan node type */
union {
diff -Napru '--color=auto' '--palette=rs=0:hd=1:ad=38;5;42:de=38;5;203:ln=36' y.orig/function.c y/function.c
--- y.orig/function.c 2025-08-16 17:44:15.818255875 +0200
+++ y/function.c 2025-08-16 17:47:42.432605040 +0200
@@ -1532,6 +1532,8 @@ f_perm(PLAN *plan, FTSENT *entry)
(S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO);
if (plan->flags == F_ATLEAST)
return ((plan->m_data | mode) == mode);
+ else if (plan->flags == F_ANY)
+ return ((plan->m_data & mode) != 0);
else
return (mode == plan->m_data);
/* NOTREACHED */
@@ -1552,6 +1554,9 @@ c_perm(char ***argvp, int isok, char *op
if (*perm == '-') {
new->flags = F_ATLEAST;
++perm;
+ } else if (*perm == '/') {
+ new->flags = F_ANY;
+ ++perm;
}
if ((set = setmode(perm)) == NULL)
--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)
Home |
Main Index |
Thread Index |
Old Index