Я хочу удалить дубликаты файлов на основе их значения 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
