python,如果目录中的文件都共享相同的权限,请运行正则表达式

问题描述 投票:0回答:1

如何递归测试每个目录,以及特定目录中的所有文件是否共享相同的uid,gid,模式,功能,selabel。如果这样做,请运行命令。

file1.txt的示例内容:

set_metadata("/system/system/vendor/app/mcRegistry/00060308060501020000000000000000.tlbin", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0, "selabel", "u:object_r:mobicore_file:s0");
set_metadata("/system/system/vendor/app/mcRegistry/ffffffffd00000000000000000000062.tlbin", "uid", 0, "gid", 0, "mode", 0644, "capabilities", 0x0, "selabel", "u:object_r:mobicore_file:s0");
set_metadata("/system/system/vendor/app/mcRegistry", "uid", 0, "gid", 0, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:mobicore_file:s0");

想要的输出:

set_metadata("/system/system/vendor/app/mcRegistry", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0644, "capabilities", 0x0, "selabel", "u:object_r:mobicore_file:s0");

因此基本上,如果所有人都共享公共uid,gid,mode,重写完整目录,将其模式重命名为dmode,保存所有文件,则将common mode添加为fmode

我也正在使用https://github.com/cubinator/ext4/blob/master/ext4.py35.py库来检查所有这些。

我将如何做。对我来说太难了。我设法用"mode" to "dmode"重命名了re.sub,仅此而已。

编辑:假设您可以使用{uid}获取文件的uid,gid等也可以使用。

EDIT2:我找到带有]的目录>

import glob

files = glob.glob("system" + '/**/*', recursive=True)

如何递归测试每个目录,以及特定目录中的所有文件是否共享相同的uid,gid,模式,功能,selabel。如果这样做,请运行命令。 file1.txt的示例内容:set_metadata(“ / system / ...

python python-3.x
1个回答
0
投票

用于检查某个集合中的所有项目是否在一组属性上共享相同值的一种常见且简单的方法是,对于集合中的每个项目,在tuple中收集这些属性(UID,GID等),并将该元组插入set。完成对所有项目的迭代之后,检查集合的大小是否恰好为1。如果是,则表示所有项目在观察到的属性上都具有相同的值。

© www.soinside.com 2019 - 2024. All rights reserved.