如何在linux上使用python检查NTFS分区上的隐藏文件和文件夹?

Mah*_*iya 6 python linux filesystems ntfs

NTFSlinux机器上使用分区.我想找出隐藏的文件和文件夹在我的NTFS分区上linux使用python.

我怎样才能实现这一目标python.任何代码片段/链接将不胜感激.

谢谢.

abb*_*bot 6

假设您使用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',
              'unknown', 'archive', 'unknown', 'unknown',
              'temp', 'unknown', 'unknown', '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()
Run Code Online (Sandbox Code Playgroud)