Я хочу удалить дубликаты файлов на основе их значения MD5. Я уже получил сценарий ниже, но как мне изменить его, чтобы он работал рекурсивно?
Так, например, у меня есть папка, содержащая 3 подпапки A B C
Я хочу, чтобы все эти файлы были в././A/./B/./C/ проверил их md5 и сравнил друг с другом, если положительное совпадение найдено, просто случайным образом удалите любое совпадение. В конце концов, больше нет дубликатов. Мне все равно, какой матч удаляется первым.
Я надеюсь, что я выразил то, что мне нужно, чтобы достичь достаточно ясно, если нет, пожалуйста, дайте мне знать :)
#!/bin/bash
while true
do
echo "Enter the directory:"
read directory
if [ -d $directory ]; then
break
else
echo "Invalid directory"
fi
done
for FILE in `ls $directory`
do
if [ ! -f $FILE ]; then
break;
fi
h=`md5sum $directory/$FILE | awk '{ print $1 }'`
for f in `ls $directory`
do
if [ -f $f ] && [ $FILE != $f ]; then
s=`md5sum $directory/$f | awk '{ print $1 }'`
if [ "$s" = "$h" ]; then
echo Removing $f
rm -rf $directory/$f
fi
fi
done
done