Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查隐藏文件&;linux上使用python的NTFS分区上的文件夹?_Python_Linux_Filesystems_Ntfs - Fatal编程技术网

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

如何检查隐藏文件&;linux上使用python的NTFS分区上的文件夹?,python,linux,filesystems,ntfs,Python,Linux,Filesystems,Ntfs,我正在linux机器上使用NTFS分区。我想使用python在linux上的NTFS分区上识别隐藏的文件和文件夹 如何使用python实现这一点。任何代码片段/链接都将不胜感激 谢谢。linux下似乎没有用于NTFS属性的python接口 支持并公开它们,以便linux工具getfattr和setfattr读取和设置 您可以使用python调用getfattr,然后解析输出 注意:在我的ubuntu系统上,我必须安装包attr,以获取命令getfattr和setfattr,假设您使用ntfs-3

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

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


谢谢。

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

支持并公开它们,以便linux工具
getfattr
setfattr
读取和设置

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


注意:在我的ubuntu系统上,我必须安装包
attr
,以获取命令
getfattr
setfattr

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

您将需要读取文件扩展属性(请参阅),您可以为此使用。NTFS属性作为一组标志存储在
system.NTFS\u attrib
扩展属性中,这些标志中记录了值

以下是读取和解码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,您可以尝试使用shell脚本实现我的示例

这也是基于ntfs-3G中的
system.ntfs\u attrib\u be
属性。如果您只是想使用它,而不关心它是如何实现的(在Python或shell中),只需下载它,从发行版安装
getfattr
setfattr
,然后使用它


到目前为止,您得到了什么?你能识别非隐藏文件吗?@Johnsyweb:我只有识别linux平台上隐藏文件的代码。。i、 e.以“.”(点字符)开头的所有文件/文件夹。我的要求是检测具有NTFS分区的USB硬盘上的隐藏文件和文件夹,并连接到我的linux机器。你是指具有“隐藏”属性的文件吗?或者一些特殊的文件没有显示在
操作系统中。walk
?@AndiDog:是的,我指的是具有“隐藏”属性的文件。我无法检测Windows文件的隐藏文件和文件夹,这些文件是通过将具有NTFS分区的USB硬盘连接到我的linux计算机来访问的。。希望它能澄清疑问。在测试“winsys”是否能在linux机器上运行之前,我想问一下您?@mahendraliya:winsys软件包围绕windows API,因此它肯定不能在linux下使用。我重写了我的答案。如果有用于读取扩展属性的python模块,为什么还要麻烦使用外部命令(对于大量调用来说速度很慢!)?您的回答还包含一个事实错误:ntfs-3g几乎从一开始就支持ntfs文件属性(如
system.ntfs\u attrib
attribute)。仅在ntfs-3g-2011.1.15或更高版本中可用的是
system.ntfs\u attrib\u be
属性,它只是
system的一个endianness固定版本。ntfs\u attrib
@abbot:我同意最好使用python模块。我不知道有一个。我不同意我的帖子中有事实错误。属性
system.ntfs_attrib_be
用于命令
getfattr
setfattr
,这正是我在回答中所写的。您也可以将system.ntfs_attrib与getfattr/setfattr一起使用,没有任何问题。