如何检查隐藏文件&;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一起使用,没有任何问题。