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

Posted

技术标签:

【中文标题】使用 awk 查找文件的所需属性【英文标题】:Find desired attributes of a file using awk 【发布时间】:2022-01-21 12:31:10 【问题描述】:

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

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

然后使用脚本:

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

获取每个人的权限,然后

switch (owner) 

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

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

        print $2;

case 1:
case 4:
case 5:

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

【问题讨论】:

请看editing-help。 【参考方案1】:

我宁愿去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 \)

对于用户和其他人没有写入权限的匹配文件将匹配a AND b

【讨论】:

以上是关于使用 awk 查找文件的所需属性的主要内容,如果未能解决你的问题,请参考以下文章

awk 查找两个文件中第二个字段之间的差异

使用Linux Find和Awk查找大文件

从不同文件中查找相关文本并使用 sed 或 awk 或 grep 进行更新

linux下查找文件及文件内查找内容--find/grep/sed/awk

awk查找指定行指定列的数据 并输出到文件

如何使用 sed/awk 或其他工具辅助查找和替换 12GB 的颠覆转储文件