使用 awk 查找文件的所需属性

Find desired attributes of a file using awk

如果我正在寻找文件的某些属性,例如用户的“r-x”,像“^-r.x”这样的正则表达式将完成这项工作。但是,如果我必须显示用户和其他人对“写入”属性具有相同权限的文件怎么办?好的,我不过是将 stat 命令的结果传递给 awk:

stat --format="%a %n" filename (permissions in octal + name)

然后使用脚本:

others= % 10;
group = ( % 100 - others)/10;
owner = int( / 100);

获取每个权限,然后

switch (owner) {

case 7:
case 6:
case 3:
case 2:

    if (other!=1 || other !=4 || other!=5)

        print ;

case 1:
case 4:
case 5:

我想一定有更简单的方法,不过...

我宁愿选择 find:

find -type f -perm -u+w,o+w -o \( ! -perm -u+w -a ! -perm -o+w \)

将从以下位置找到文件 bc

$ls -l
-rw-r--r-- 1 john john 0 Dez 19 16:13 a
-r--r--r-- 1 john john 0 Dez 19 16:13 b
-rw-r--rw- 1 john john 0 Dez 19 16:13 c

注意逻辑:看似简单的

\( ! -perm -u+w,o+w \)

对于没有用户和其他人写入权限的匹配文件,将同时匹配 ab.