编程分享编程mac最烦的东西:“._”,每次用移动硬盘都会生成
郭顺发summary: mac电脑用移动硬盘来传输文件,到windows上看,每个文件都又整出来一个“._”文件,烦死,一个脚本全给他删了。
不废话直接上脚本
以下是一个Python脚本,可以递归删除指定目录及其子目录中所有以 ._
开头的文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import os import shutil import sys
def delete_dot_underscore_files(directory): """ 递归删除所有以 ._ 开头的文件 """ deleted_files = [] for root, dirs, files in os.walk(directory): for filename in files: if filename.startswith('._'): file_path = os.path.join(root, filename) try: os.remove(file_path) deleted_files.append(file_path) except Exception as e: print(f"删除失败 {file_path}: {str(e)}") return deleted_files
if __name__ == "__main__": target_dir = sys.argv[1] if len(sys.argv) > 1 else os.getcwd()
print(f"扫描目录: {target_dir}") deleted = delete_dot_underscore_files(target_dir)
if not deleted: print("\n没有找到以 ._ 开头的文件") sys.exit(0)
print("\n以下文件将被删除:") for f in deleted: print(f"• {f}")
confirm = input(f"\n确认要删除 {len(deleted)} 个文件吗?(y/n): ").lower() if confirm == 'y': print("\n正在删除...") print(f"成功删除 {len(deleted)} 个文件") else: print("操作已取消")
|
功能特性:
- 安全确认机制:先扫描显示要删除的文件,需要手动确认才会执行删除
- 递归处理:自动处理子目录中的文件
- 错误处理:捕获并显示删除失败的文件信息
- 路径支持:
- 可以指定目标目录作为命令行参数
- 不指定参数时默认处理当前目录
- 兼容性:支持 Windows/macOS/Linux
使用方法:
- 将脚本保存为
clean_dot_files.py
- 打开终端/命令提示符,执行以下命令:
1 2 3 4 5
| python clean_dot_files.py
python clean_dot_files.py /path/to/directory
|
注意事项:
- 首次运行时建议先不加确认直接查看会被删除的文件
- 系统关键文件(如
._.DS_Store
)可能需要特殊处理
- 建议先备份重要数据再执行删除操作
- 某些程序可能正在使用这些文件时会导致删除失败