python - python 如果目录中的文件都共享相同的权限,则运行正则表达式
问题描述
如何递归测试每个目录以及特定目录中的所有文件是否共享相同的 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,模式,重写完整目录,将其模式重命名为dmode,保存所有文件通用模式将其添加为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 等)tuple
收集到集合中的每个项目的 a 中,并将该元组插入一个set
。完成对所有项目的迭代后,检查集合的大小是否恰好为 1。如果是,则意味着所有项目在观察到的属性上具有相同的值。
推荐阅读
- angular - 如何从 Angular 7 上的 URL 加载文本/html
- flutter - 在颤动中生成路由时无效的 radix-10 数字索引
- javascript - 在对象中的Javascript函数中传递参数
- python - OpenGL 光 - 颜色不会在一个角度平滑变化
- python-3.x - python main.py 在pycharm中转文本文件
- asp.net-core - 如何使用 Moq 模拟和期望具有 Action 委托作为参数之一的方法
- javascript - 此关键字的分配
- ios - 从 swift 访问前向声明的枚举的属性
- javascript - javascript/reactjs中具有多个参数的递归函数
- c# - FontStyle 枚举与 CheckBox.Text FontStyles 的可用 FontStyles 之间的差异