z7356995
66 天前
#!/bin/bash
# 检查是否提供了目录参数
if [ "$#" -ne 1 ]; then
echo "使用方法: $0 <directory>"
exit 1
fi
# 获取指定的目录
target_directory="$1"
# 检查目录是否存在
if [ ! -d "$target_directory" ]; then
echo "错误: 目录不存在: $target_directory"
exit 1
fi
# 定义一个关联数组来存储文件的哈希值
declare -A file_hashes
# 遍历指定目录及其子目录中的所有文件
find "$target_directory" -type f | while read -r file; do
# 计算文件的哈希值
hash=$(md5sum "$file" | awk '{ print $1 }')
# 检查哈希值是否已经存在
if [[ -n "${file_hashes[$hash]}" ]]; then
# 如果存在,输出删除信息并删除文件
echo "删除重复文件: $file"
rm "$file"
else
# 如果不存在,将哈希值添加到数组中
file_hashes[$hash]="$file"
fi
done