我在此变量中存储了此命令:
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
。