Existe-t-il un moyen simple de rechercher tous les fichiers d’un répertoire particulier contenant des caractères non-ASCII (c.-à-d. Unicode) dans le nom du fichier? J'utilise Windows XP x64 SP2, système de fichiers NTFS.
Existe-t-il un moyen simple de rechercher tous les fichiers d’un répertoire particulier contenant des caractères non-ASCII (c.-à-d. Unicode) dans le nom du fichier? J'utilise Windows XP x64 SP2, système de fichiers NTFS.
Réponses:
Voici une méthode utilisant Powershell:
gci -recurse . | where {$_.Name -match "[^\u0000-\u007F]"}
powershell -Command "gci -recurse . | where {$_.Name -match '[^\u0000-\u007F]'}"
gci -recurse -force | where {$_.Name -match "[^\u0000-\u007F]"} | rename-item -newname { $_.name -replace "[^\u0000-\u007F]",''}
J'ai fini par écrire un script Python pour cela. L'afficher au cas où cela pourrait aider quelqu'un. N'hésitez pas à passer à 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)