如何查看bash中给定文件的父文件夹的权限



我在此变量中存储了此命令:

filelist=$(find $dir_name -size $sizeFileTmp -printf '%M %n %u %g %-s %Tb %Td %Tk:%TM %Pn')
echo "$filelist" | sort -rnk5 | awk '{printf "%s %s %s %s %6s %3s %2s %5s %sn", $1, $2, $3, $4, $5, $6, $7, $8, $9}'

产生此输出:

-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir2/testdir2/subdir2/phones
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir2/testdir2/phones
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir1/testdir1/subdir1/phones
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir1/testdir1/phones
-rwx------ 1 juanpa juanpa 135838 Nov 04 20:47 sample.dir1/.phones
-rwx------ 1 juanpa juanpa  26615 Nov 04 20:47 sample.dir2/vimtutor
-rwx------ 1 juanpa juanpa  26615 Nov 04 20:47 sample.dir2/testdir2/vimtutor
-rwx------ 1 juanpa juanpa  26615 Nov 04 20:47 sample.dir2/testdir2/subdir2/vimtutor
-rwx------ 1 juanpa juanpa  26615 Nov 04 20:47 sample.dir1/vimtutor
-rwx------ 1 juanpa juanpa  26615 Nov 04 20:47 sample.dir1/testdir1/vimtutor
-rwx------ 1 juanpa juanpa  26615 Nov 04 20:47 sample.dir1/testdir1/subdir1/vimtutor
-rwx------ 1 juanpa juanpa  25557 Nov 04 20:47 sample.dir2/testdir2/subdir2/cdlist
-rwx------ 1 juanpa juanpa  25557 Nov 04 20:47 sample.dir2/testdir2/cdlist
-rwx------ 1 juanpa juanpa  25557 Nov 04 20:47 sample.dir2/cdlist
-rwx------ 1 juanpa juanpa  25557 Nov 04 20:47 sample.dir1/testdir1/subdir1/cdlist
-rwx------ 1 juanpa juanpa  25557 Nov 04 20:47 sample.dir1/testdir1/cdlist
-rwx------ 1 juanpa juanpa  25557 Nov 04 20:47 sample.dir1/cdlist
-rwx------ 1 juanpa juanpa  20558 Nov 04 20:47 sample.dir2/testdir2/subdir2/sample.txt
-rwx------ 1 juanpa juanpa  20558 Nov 04 20:47 sample.dir2/testdir2/sample.txt
-rwx------ 1 juanpa juanpa  20558 Nov 04 20:47 sample.dir2/sample.txt
-rwx------ 1 juanpa juanpa  20558 Nov 04 20:47 sample.dir1/testdir1/subdir1/sample.txt
-rwx------ 1 juanpa juanpa  20558 Nov 04 20:47 sample.dir1/testdir1/sample.txt
-rwx------ 1 juanpa juanpa  20558 Nov 04 20:47 sample.dir1/sample.txt

我的问题是如何检查包含这些文件的文件夹是否没有写入和执行权限,然后突出显示这些行?

预先感谢

以下命令可以在$ dir下识别目录,而无需读/写入权限,但不会将报告限制在-size谓词可能被排除的文件夹中,以生成列表:

find $dir -type d ! ( -readable -a -writable ) -printf '%pn'

以下内容似乎相当令人费解,但它预示着"!"要"突出显示"没有用户可读/写入目录的项目(尽管如果不存在该文件夹上的读取权限,则可能会问如何获取文件列表)。

filelist=$(find $dir_name -size $sizeFileTmp -printf '%M %n %u %g %-s %Tb %Td %Tk:%TM %Pn')
if [ -z "${filelist}" ];
then
  echo "No files."
else
  echo "$filelist" | 
  sort -rnk5 | 
  awk 
    '{ DIR = gensub(/[/][^/]*$/, "", "", $9);
       CMD = "stat -c +%A " DIR;
       CMD | getline PERMS;
       if (PERMS !~ /^..rw/)
       {
         printf("!");
       }
       printf("%s %s %s %s %6s %3s %2s %5s %sn", 
         $1, $2, $3, $4, $5, $6, $7, $8, $9);
    }' -
fi

这不会检查目录的每个级别,而只能检查叶子文件夹。

感谢F. Hauri使用stat

相关内容

  • 没有找到相关文章

最新更新