Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我如何找到任何人都可以执行的文件/目录?_Linux_Bash_Unix_Permissions - Fatal编程技术网

Linux 我如何找到任何人都可以执行的文件/目录?

Linux 我如何找到任何人都可以执行的文件/目录?,linux,bash,unix,permissions,Linux,Bash,Unix,Permissions,我正在尝试查找所有可以由用户、组或其他用户执行的文件或目录。到目前为止,我已经想出了这个 find . -perm -u+x 我不知道如何搜索组和其他以及。我知道 find .-perm -ugo+x 将搜索可由所有3个(基本上是a+x)执行的文件/目录 我已经搜索过了,但不知道如何查找这3个选项中的任何一个。一个地方建议 find . -perm -u+x, g+x, o+x 但是我得到了错误 find: -perm: u+x,: illegal mode string 有什么想法吗?

我正在尝试查找所有可以由用户、组或其他用户执行的文件或目录。到目前为止,我已经想出了这个

find . -perm -u+x
我不知道如何搜索组和其他以及。我知道

find .-perm -ugo+x
将搜索可由所有3个(基本上是a+x)执行的文件/目录

我已经搜索过了,但不知道如何查找这3个选项中的任何一个。一个地方建议

find . -perm -u+x, g+x, o+x
但是我得到了错误

find: -perm: u+x,: illegal mode string
有什么想法吗?

试试这个:

find .  -perm /u=x,g=x,o=x 

符合POSIX的语法应该是

find . \( -perm u=x -o -perm g=x -o -perm o=x \)

三个
-perm
原色中的每一个检查文件是否可由用户、组或其他人执行;它们由
-o
连接,因此整个
\(…\)
组只有一个为真。

或更短的
查找-perm/111
(或较旧的语法
find.-perm+111
Woops,忘记了我答案中的
,+1。不过,您应该添加错误的解释。当我尝试/111或/u=x,g=x,o=x时,我仍然会得到“非法模式字符串”。但是我尝试了+111,这是可行的。有人能给我解释一下吗?有没有一个与+111类似的等价物,类似于/u=x,g=x,o=x?@HaydenHolligan,
+111
是(现在)不推荐使用的语法(对于GNU查找)和
/111
一样-例如,查找任何具有任何可执行位的文件。您一定有一个糟糕的旧linux,或者您有一些没有GNU find的类似BSD的系统。@HaydenHolligan听起来像BSD find(例如osx)。值得注意的是,然后您应该使用
+111
(某些用户可执行)而不是
-111
(可供所有用户执行)。+1.除非您指定了特定的操作或其他选项,否则不要认为需要括号(它们实际上是隐含的
-print
),哦,说得好。我将保留括号,以防有人试图在回答中添加其他筛选器。我想您的意思是
-perm-u=x-o…
(请注意
u
)前面的破折号。如果u/g/o前面没有破折号,该命令将只查找具有0100(---x------)、0010(---x------)或0001(---x)权限的文件,这些权限可能正是您想要的,但可能不是。(从POSIX文档:“如果省略…当文件权限位与结果模板的值完全匹配时,计算为true。否则,如果模式前缀为…如果结果模板中至少所有位都在文件权限位中设置,则计算为true。”)