import os
import shutil
import argparse

# 脚本功能：可以查询目标路径下面多个文件夹中的重复文件，并将多余的重复文件删除

def find_and_delete_duplicate_files(path):
    # 字典，用于跟踪文件名及其出现的路径
    file_paths = {}

    # 遍历目录及其子目录
    for root, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(root, file)

            # 如果文件名已经在字典中，则添加其路径
            if file in file_paths:
                file_paths[file].append(file_path)
            else:
                file_paths[file] = [file_path]

                # 查找并删除重复文件
    for file, paths in file_paths.items():
        if len(paths) > 1:
            # 保留第一个文件，删除其他文件
            to_keep = paths[0]
            for path in paths[1:]:
                try:
                    print(f"Deleting duplicate file: {path}")
                    os.remove(path)
                except OSError as e:
                    print(f"Error deleting file {path}: {e}")


def main():
    parse = argparse.ArgumentParser("查找重复文件并删除\n")
    parse.add_argument("input", help="输入路径")

    args = parse.parse_args()
    find_and_delete_duplicate_files(args.input)


if __name__ == "__main__":
    main()
