例子
-rwxr--r-- 1 me users 0 May 27 13:58 file_0
-rw-rwxrw- 1 me users 0 May 27 13:58 file_1
-rw-rw-rwx 1 me users 0 May 27 13:59 file_2
-rwxrwxrwx 1 me users 0 May 27 14:02 file_3
我需要列出当前目录中的所有 4 个文件
- 艾克斯
- 非 gnu 'find',因此“find . -executable”不起作用
答案1
find . -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \)
对我有用。还有其他解决方案吗?
答案2
find . -type f -perm +111
从find(1)
:
-perm[-|+]模式
这模式可以是符号(见
chmod(1)
)或八进制数。如果模式是符号,假设起始值为零,并且模式设置或清除权限而不考虑进程的文件模式创建掩码。如果模式是八进制,则只有S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO
文件模式位的位 07777 ( ) 参与比较。如果模式前面有一个破折号(“-
”),如果至少模式中的所有位都在文件的模式位中设置,则此主模式评估为真。如果模式前面有一个加号(“+
”),如果任何位在模式设置在文件的模式位中。否则,如果模式与文件的模式位完全匹配。请注意,符号模式的第一个字符不能是破折号(“-
”)。
在 SUSv3 中没有指定,但至少可以在 *BSD 和 Linux 之间移植(我还没有测试过其他的)。
答案3
嗯,如果你喜欢的话鲁布·戈德堡装置,你可以使用:
ls -l | grep '^[^d]\(..x\|.\{5\}x\|.\{8\}x\)' | awk '{ print $8 }'
虽然这只列出了当前目录。