Windows XP में फ़ाइल नाम में गैर- ASCII वर्णों के साथ फ़ाइलें खोजें


7

क्या किसी विशेष निर्देशिका में सभी फ़ाइलों को खोजने का कोई आसान तरीका है, जिसमें फ़ाइल नाम में कोई भी गैर-एएससीआईआई (यानी यूनिकोड) वर्ण है? मैं Windows XP x64 SP2, NTFS फाइल सिस्टम चला रहा हूं।


यदि फ़ाइल नाम में 0x7F से ऊपर कोई बाइट्स नहीं है, तो यह ASCII है। इसका मतलब यह नहीं है कि यह यूनिकोड है, हालांकि। आपको पायथन में इसके साथ-साथ कई अन्य प्रोग्रामिंग भाषाओं में सक्षम होना चाहिए।
martineau

जवाबों:


10

यहाँ Powershell का उपयोग करने की एक विधि है:

gci -recurse . | where {$_.Name -match "[^\u0000-\u007F]"}

आप इसे एक के रूप में उपयोग कर सकते हैं जत्था फ़ाइल: powershell -Command "gci -recurse . | where {$_.Name -match '[^\u0000-\u007F]'}"
ray pixar

यह उत्तर उत्कृष्ट और अभी भी प्रासंगिक है। क्या इसे और भी बेहतर बना देगा (हालाँकि पूछने वाले ने यह अनुरोध नहीं किया था) एक विकल्प है बदलने के या हटाना उन अवैध पात्रों।
Thomas

1
पता लगा लिया gci -recurse -force | where {$_.Name -match "[^\u0000-\u007F]"} | rename-item -newname { $_.name -replace "[^\u0000-\u007F]",''}
Thomas

5

मैंने इसके लिए एक पायथन स्क्रिप्ट लिखना समाप्त किया। मामले में इसे पोस्ट करने से किसी को भी मदद मिलती है। StackOverflow में जाने के लिए स्वतंत्र महसूस करें।

import sys, os


def main(argv):
    if len(argv) != 2:
        raise Exception('Syntax: FindUnicodeFiles.py <directory>')

    startdir = argv[1]
    if not os.path.isdir(startdir):
        raise Exception('"%s" is not a directory' % startdir)

    for r in recurse_breadth_first(startdir, is_unicode_filename):
        print(r)


def recurse_breadth_first(dirpath, test_func):
    namesandpaths = [(f, os.path.join(dirpath, f)) for f in os.listdir(dirpath)]

    for (name, path) in namesandpaths:
        if test_func(name):
            yield path

    for (_, path) in namesandpaths:
        if os.path.isdir(path):
            for r in recurse_breadth_first(path, test_func):
                yield r


def is_unicode_filename(filename):
    return any(ord(c) >= 0x7F for c in filename)


if __name__ == '__main__':
    main(sys.argv)

मैंने इस लिपि का परीक्षण किया है और यह उपरोक्त पॉवरशेल लिपि की तरह ही काम करता है। superuser.com/a/272063/117014
ray pixar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.