📌  相关文章
📜  从 git 中删除重复文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:06:31.320000             🧑  作者: Mango

从 Git 中删除重复文件 - Shell/Bash

在进行 Git 版本控制的过程中,有时候会遇到一些重复的文件,这些文件可能是因为误操作或者其他原因造成的。为了保持代码库的整洁性和减少冲突,我们需要删除这些重复的文件。下面给出一个 Shell/Bash 脚本的实现方法。

实现思路
  1. 克隆 Git 仓库到本地
$ git clone https://github.com/username/repo.git
  1. 进入仓库目录
$ cd repo
  1. 查找重复文件
$ find . -type f ! -path './.git/*' -exec md5sum {} \; | sort | uniq -w32 --all-repeated=separate

上述命令的作用是在当前目录及其子目录下查找所有类型为文件的文件,并且排除了 .git 目录下的文件,然后对其进行 MD5 校验处理。最后使用 sortuniq 命令对相同的文件进行去重处理并输出。

  1. 删除重复文件
$ find . -type f ! -path './.git/*' -exec md5sum {} \; | sort | uniq -w32 --all-repeated=separate \
  | awk '{print $NF}' | xargs -I{} sh -c 'rm "{}"'

上述命令的作用是在之前查找到的重复文件列表中,使用 awk 命令获取到每个文件名,并使用 xargs 命令调用 rm 命令进行删除操作。

使用注意事项
  • 在执行删除操作前,请确保已经备份好重要数据
  • 只删除确信不会影响代码运行的文件
  • 如果不是针对 Git 仓库中的文件进行操作,可以将 find 命令中的路径及其他参数进行修改
参考资料
  • [Linux find 命令详解]{https://www.cnblogs.com/ggjucheng/p/3383083.html}
  • [Linux sort 命令详解]{https://www.cnblogs.com/ggjucheng/p/3247041.html}
  • [Linux uniq 命令详解]{https://www.cnblogs.com/ggjucheng/p/3245136.html}
  • [Linux awk 命令详解]{https://www.cnblogs.com/ggjucheng/p/3221612.html}
  • [Linux xargs 命令详解]{https://www.cnblogs.com/ggjucheng/p/3248315.html}