正如主题所说,我正在寻找一种自动删除重复文件的方法。我知道我可以运行命令 fdupes -rdN,但它会自动选择第一个文件,同时删除第二个文件。
询问是因为我的重复项与此类似
/文件/123Testfile.txt /文件/Testfile.txt /文件/84579875blahblahblahSecondTestfile.txt /文件/SecondTestfile.txt
检查了手册页,我要么错过了,要么找不到自动删除第一个文件的选项。有人知道怎样实现这个吗?
提前致谢
答案1
我遇到了类似的问题,最后只写了一个小的 POSIX 脚本1。一般的想法是保留“更深”的文件;为了做到这一点,您需要反转排序顺序,并且只删除“高于”当前最深的文件。对于后人,这是脚本的(当前迭代);
#!/bin/sh
# remove higher order duplicate files
# e.g. ./a vs ./dir/a --> ./a is deleted
# equal order duplicates will be ignored
# usage: fdupes -ri dir/ | $0
depth() {
echo $(echo "$1" | grep -o '/' | wc -l)
}
deepest=""
while IFS= read -r line; do
if [ -z "$line" ]
then
deepest=""
else
if [ $(depth "$line") -gt $(depth "$deepest") ]
then
# new deepest
deepest="$line"
else
if [ $(depth "$line") -lt $(depth "$deepest") ]
then
rm "$line"
fi
fi
# ignore equal depth
fi
done
鉴于您的示例目录结构,我认为这是适用的,不管您的问题的标题是什么。