首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在linux上使用python检查NTFS分区上的隐藏文件和文件夹?

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

Stack Overflow用户
提问于 2011-04-11 17:56:07
回答 3查看 6.6K关注 0票数 6

我在linux机器上使用NTFS分区。我想使用python识别我在linux上的NTFS分区上的隐藏文件和文件夹。

如何使用python来实现这一点。任何代码片段/链接将不胜感激。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-14 15:52:47

假设您正在使用ntfs-3g在linux上挂载NTFS分区(这是大多数当前linux发行版的默认设置)。

您将需要读取文件扩展属性(请参阅attr(5)),您可以使用pyxattr来实现此目的。NTFS属性作为一组标志存储在system.ntfs_attrib扩展属性中,这些标志的值记录在ntfs-3g documentation中。

下面是读取和解码NTFS文件系统属性并使用它们过滤文件的示例代码:

代码语言:javascript
运行
复制
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()
票数 6
EN

Stack Overflow用户

发布于 2011-04-14 14:19:32

在linux下似乎没有用于NTFS属性的python接口。

NTFS-3G支持NTFS file attributes,并将它们公开给getfattrsetfattr工具进行读取和设置。

您可以使用python的subprocess调用getfattr,然后解析输出。

注意:在我的ubuntu系统上,我必须安装attr包才能获得getfattrsetfattr命令。

票数 1
EN

Stack Overflow用户

发布于 2015-03-18 10:01:51

如果您的问题不限于Python,您可以尝试使用shell脚本实现我的示例。

这也基于NTFS-3G中的system.ntfs_attrib_be属性。如果您只是要使用它,而不关心它是如何实现的(在Python或shell中),那么只需下载它,从您的发行版安装getfattrsetfattr,然后使用它。

https://gist.github.com/Explorer09/ac4bf6838c271a9968b3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5619614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档