以下是一个Python脚本可以实现从当前文件夹递归搜索所有文件只保留名为’sim.log’的文件删除其他所有文件同时保留所有文件夹结构importosimportargparseimportsysfrompathlibimportPathdeffind_and_preserve_sim_log(start_dir.): 递归搜索所有文件只保留sim.log文件删除其他所有文件 Args: start_dir: 起始目录默认为当前目录 preserved_files0deleted_files0errors0print(f开始处理目录:{os.path.abspath(start_dir)})print(正在扫描文件...)# 首先统计所有文件all_files[]forroot,dirs,filesinos.walk(start_dir):forfileinfiles:full_pathos.path.join(root,file)all_files.append(full_path)print(f找到{len(all_files)}个文件)# 确认操作confirminput(f确定要删除除sim.log外的所有文件吗此操作不可撤销(y/n): )ifconfirm.lower()notin[y,yes,是]:print(操作已取消)return# 处理文件forfile_pathinall_files:try:filenameos.path.basename(file_path)iffilenamesim.log:# 保留sim.log文件preserved_files1print(f[保留]{file_path})else:# 删除其他文件os.remove(file_path)deleted_files1print(f[删除]{file_path})exceptExceptionase:errors1print(f[错误] 处理文件{file_path}时出错:{str(e)})# 输出统计结果print(\n*50)print(处理完成)print(f保留文件:{preserved_files}个)print(f删除文件:{deleted_files}个)print(f错误数量:{errors}个)print(*50)defdry_run(start_dir.): 试运行模式显示将要执行的操作但不实际删除文件 print(f试运行模式 - 扫描目录:{os.path.abspath(start_dir)})print(*50)preserved_files[]files_to_delete[]forroot,dirs,filesinos.walk(start_dir):forfileinfiles:full_pathos.path.join(root,file)iffilesim.log:preserved_files.append(full_path)else:files_to_delete.append(full_path)print(f找到{len(preserved_files)}个sim.log文件将被保留:)forfileinpreserved_files:print(f [保留]{file})print(f\n找到{len(files_to_delete)}个文件将被删除:)forfileinfiles_to_delete[:10]:# 只显示前10个print(f [删除]{file})iflen(files_to_delete)10:print(f ... 和另外{len(files_to_delete)-10}个文件)print(f\n总计:{len(preserved_files)}个文件被保留,{len(files_to_delete)}个文件被删除)defmain():parserargparse.ArgumentParser(description递归删除除sim.log外的所有文件保留文件夹结构)parser.add_argument(--dry-run,actionstore_true,help试运行模式显示将要执行的操作但不实际删除)parser.add_argument(--directory,-d,default.,help要处理的目录默认为当前目录)argsparser.parse_args()ifargs.dry_run:dry_run(args.directory)else:find_and_preserve_sim_log(args.directory)if__name____main__:main()使用说明基本用法在当前目录执行操作python script.py指定特定目录python script.py --directory /path/to/target试运行模式不实际删除文件python script.py --dry-run脚本功能特点1.安全第一操作前需要用户确认防止误删2.试运行模式使用–dry-run参数预览操作结果3.递归处理自动处理所有子目录中的文件4.保留文件夹结构只删除文件不删除任何文件夹5.详细日志显示每个文件的处理状态6.错误处理完善的异常捕获和处理机制增强版脚本支持文件过滤如果您需要更灵活的文件保留规则可以使用以下增强版本import osimport argparsefrom pathlib import Pathdef clean_directory_except_patterns(start_dir‘.’, patterns_to_keep[‘sim.log’]):“”增强版支持保留多种文件模式Args: start_dir: 起始目录 patterns_to_keep: 要保留的文件模式列表 preserved_count 0 deleted_count 0 for root, dirs, files in os.walk(start_dir): for file in files: file_path os.path.join(root, file) # 检查文件是否匹配要保留的模式 should_preserve any(pattern in file for pattern in patterns_to_keep) try: if should_preserve: preserved_count 1 print(f[保留] {file_path}) else: os.remove(file_path) deleted_count 1 print(f[删除] {file_path}) except Exception as e: print(f[错误] 处理 {file_path} 失败: {e}) return preserved_count, deleted_count使用示例ifname “main”:# 保留sim.log和config.ini文件clean_directory_except_patterns(‘.’, [‘sim.log’, ‘config.ini’])注意事项1.数据备份在执行前建议备份重要数据2.权限问题确保有足够的文件删除权限3.不可逆操作文件删除后无法恢复请谨慎操作4.测试建议先在测试目录使用–dry-run模式验证效果这个脚本可以安全地清理目录结构只保留您指定的重要文件同时保持文件夹层次结构完整。