此脚本递归打印名称中包含不属于 Unicode 基本拉丁或 Latin-1 补充块字符的文件和目录名。
find_invalid_filenames.py
#!/usr/bin/env python3
import os
import argparse
def is_valid_char(c):
"""检查字符是否在 Unicode 基本拉丁或 Latin-1 补充块内。"""
return '0000' <= f"{ord(c):04x}" <= '00ff'
def contains_invalid_chars(name):
"""检查字符串是否包含基本拉丁或 Latin-1 补充块之外的字符。"""
return any(not is_valid_char(c) for c in name)
def check_directory(path):
"""递归检查目录和文件名中是否包含无效字符。"""
for root, dirs, files in os.walk(path):
for name in dirs + files:
if contains_invalid_chars(name):
print(os.path.join(root, name))
def main():
parser = argparse.ArgumentParser(description="检查名称中包含无效字符的文件和目录。")
parser.add_argument('path', type=str, help="要检查的目录路径。")
args = parser.parse_args()
if not os.path.isdir(args.path):
print(f"路径 {args.path} 不是有效目录。")
return
check_directory(args.path)
if __name__ == "__main__":
main()