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

标签 python linux filesystems ntfs

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

如何使用 python 实现此目的。任何代码片段/链接将不胜感激。

谢谢。

最佳答案

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

您将需要读取文件扩展属性(参见 attr(5) ),您可以使用 pyxattr为了这。 NTFS 属性作为一组标志存储在 system.ntfs_attrib 扩展属性中,其值记录在 ntfs-3g documentation 中。 .

下面是读取和解码 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()

关于python - 如何在 Linux 上使用 python 检查 NTFS 分区上的隐藏文件和文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619614/

相关文章:

python - 将颜色打印到 python 命令行

linux - X86_32 Linux下使用汇编语言保留部分控制台

linux - 如何在 Linux 中将每天的文件分成几小时

java - 最佳 Tomcat 服务器性能的图像文件夹结构的最佳架构是什么?

c++ - 如何递归复制文件和目录

java - FileInputStream、JAVA 的意外行为

python - Google App Engine 有 python REPL 吗?

python - 如何一次删除多列字符串中的第一个字符?

python - 如何使用增量值向 Pyspark 中的 DataFrame 添加一列?

在 XCB 中将鼠标光标更改为标准手形光标