私は、マシンでNTFS
パーティションを使用しています。 NTFS
パーティションの隠しファイルとフォルダをlinux
に、python
を使用して指定したいと思います。Linux上でPythonを使ってNTFSパーティションの隠しファイルとフォルダをチェックする方法は?
python
を使ってどうすれば実現できますか?すべてのコードスニペット/リンクは高く評価されます。
ありがとうございました。
私は、マシンでNTFS
パーティションを使用しています。 NTFS
パーティションの隠しファイルとフォルダをlinux
に、python
を使用して指定したいと思います。Linux上でPythonを使ってNTFSパーティションの隠しファイルとフォルダをチェックする方法は?
python
を使ってどうすれば実現できますか?すべてのコードスニペット/リンクは高く評価されます。
ありがとうございました。
ntfs-3gを使用してNTFSパーティションをlinuxにマウントしようとしていると仮定します(これは最新のlinuxディストリビューションではデフォルトです)。
ファイル拡張属性(attr(5)を参照)を読む必要があります。pyxattrを使用できます。 NTFS属性は、ntfs-3g documentationに記載されているフラグのセットとしてsystem.ntfs_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()
linuxの下にNTFS属性用のpythonインターフェイスがないようです。
NTFS-3GNTFS file attributesをサポートしており、それらを読み込んで設定するLinuxツールgetfattr
およびsetfattr
に公開しています。
subprocess
を使用してgetfattr
を呼び出し、出力を解析することができます。
注:私のubuntuシステムでは、コマンドgetfattr
とsetfattr
を得るために、パッケージattr
をインストールしなければなりませんでした。
ちょうど 'winsys' Linuxマシンで動作しますか? –
@mahendraliya:WinSysパッケージはWindows APIをラップしているので、Linuxでは使えません。私は自分の答えを書き直した。 – lesmana
拡張属性を読み込むためのPythonモジュールがある場合、なぜ外部コマンド(大量の呼び出しが遅くなります!あなたの答えには事実上のエラーも含まれています。ntfsファイルの属性はntfs-3gによってほぼ最初から( 'system.ntfs_attrib'属性として)サポートされています。 ntfs-3g-2011.1.15以降でのみ利用可能なのは 'system.ntfs_attrib_be'属性です。これは' system.ntfs_attrib'のエンディアン固定版です。 – abbot
あなたの質問はPythonに限定されていない場合、あなたはシェルスクリプトで実装私の例を試すことができます。
これはNTFS-3Gのsystem.ntfs_attrib_be
属性にも基づいています。 に行く場合は、を使用してください(Pythonまたはシェルで)どのように実装されているか気にしないで、ダウンロードしてください。getfattr
とsetfattr
をディストリビューションからインストールして使用してください。
あなたはこれまでに何を得ていますか?非隠しファイルを特定できますか? – Johnsyweb
@ Johnsyweb:私はちょうどLinuxプラットフォーム上の隠しファイルを識別するコードを持っています。つまり、 "。"で始まるすべてのファイル/フォルダ(ドット文字)。私の必要条件は、NTFSパーティションを持ち、私のLinuxマシンに接続されているUSBハードディスク上の隠しファイルとフォルダを検出することです。 –
"hidden"属性のファイルを意味しますか?あるいは、 'os.walk'で表示されない特別なファイルがありますか? – AndiDog