使用 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 \)
将从以下位置找到文件 b
和 c
:
$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
和 b
.
如果我正在寻找文件的某些属性,例如用户的“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 \)
将从以下位置找到文件 b
和 c
:
$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
和 b
.