find -type f -exec md5sum '{}' ';' | uniq --all-repeated=separate -w 33 | cut -c 35-
我正在尝试使用md5sum删除在某个目录中具有完全相同内容的文件,以便放入我的bash文件的末尾。我在尝试研究md5sum时遇到的代码,但它是针对uniq而我正在使用的是petware。另外我对linux很新,所以我可能错过了那段代码。
编辑:有没有其他方法可以获取唯一文件?答案 0 :(得分:4)
你可以使用fdupes(sudo apt-get install fdupes
)
它完成所有工作。
答案 1 :(得分:1)
这些方面的东西(未经测试):
#!/bin/bash
shopt -s globstar nullglob
shopt -u failglob
declare -A files=()
declare -A nbHash=()
for f in **; do
[[ -f "$f" ]] || continue
md5sum=$(md5sum -- "$f")
files[$f]=$md5sum
((nbHash[$md5sum]+=1))
done
for f in "${!files[@]}"; do
if ((nbHash[${files[$f]}]-->1)); then
rm -- "$f"
fi
done
制作2个关联数组:
files
:键是文件名,值是md5sum nbHash
:键是md5sum,值是md5sum的文件数完成这些关联数组后,循环遍历文件(即通过数组files
的键),并确定是否有多个文件具有相同的md5sum(您可以从{{获得此信息) 1}}数组),如果是,则rm文件。