我在linux机器上使用NTFS分区。 我想使用python来识别linux上NTFS分区上隐藏的文件和文件夹。
我怎样才能实现这个使用python 。 任何代码片段/链接将不胜感激。
谢谢。
文件系统testing套件
如何在Linux内核中select“sys”和“proc”文件
如何find文件所在的安装点?
inode实际上是否指向磁盘中的地址?
如何在python中find文件系统types
Python – 使脚本来操纵Windows文件path,但在Linux上运行
具有超过百万个小(30 kB)文件的Windows 7目录会显着降低性能
依次读取大量的小文件
假设您使用ntfs-3g在Linux上挂载NTFS分区(这是大多数当前Linux发行版的默认分区)。
你将需要阅读文件的扩展属性(见attr(5) ),你可以使用pyxattr 。 NTFS属性作为一组标志存储在system.ntfs_attrib扩展属性中,这些值在ntfs-3g文档中有记录 。
这里是一个示例代码来读取和解码NTFS文件系统属性,并使用它们来过滤文件:
import os,struct,xattr # values from http://www.tuxera.com/community/ntfs-3g-advanced/extended-attributes/ attributes = ['readonly','hidden','system','unkNown','archive','temp','compressed_dir','offline','not_content_indexed' ] + ['unkNown']*18 def ntfs_attr(path): attr = struct.unpack("i",xattr.get(path,"system.ntfs_attrib"))[0] for shift,attribute in enumerate(attributes): if (attr >> shift) & 1 == 1: yield attribute def main(): import sys if len(sys.argv) != 3: print "Usage: %s path attribute" % sys.argv[0] a = set(attributes) a.remove('unkNown') print "where attribute is one of:",' '.join(a) sys.exit(1) path = sys.argv[1] attribute = sys.argv[2] print "Files with %s attribute in %s:" % (attribute,path) for filename in os.listdir(path): fullname = os.path.join(path,filename) if attribute in ntfs_attr(fullname): print fullname if __name__ == '__main__': main()
linux下似乎没有NTFS属性的Python接口。
NTFS-3G支持NTFS文件属性 ,并将它们公开给Linux工具getfattr和setfattr来读取和设置。
你可以使用python的subprocess getfattr来调用getfattr ,然后解析输出。
注意:在我的Ubuntu系统上,我必须安装包attr以获取命令getfattr和setfattr 。
如果你的问题不限于Python,你可以尝试我在shell脚本中实现的例子。
这也是基于NTFS-3G中的system.ntfs_attrib_be属性。 如果您只是要使用它,而不关心它是如何实现的(在Python或shell中),只需下载它,从发行版安装getfattr和setfattr ,然后使用它。
https://gist.github.com/Explorer09/ac4bf6838c271a9968b3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。