重複したイメージファイルの削除

重複したイメージファイルの削除
[user@notebook foobar]$ ls *.jpg|wc -l
1959
[user@notebook foobar]$ cksum * | cut -d' ' -f-2 | sort | uniq -di | wc -l
698
[user@notebook foobar]$ 

1つのディレクトリにたくさんのjpgファイルがあります。多くのファイルが重複していますが、同じcksumがあるかどうかを判断できます。時には、同じ写真に2〜3個のファイルがあることがあります。

尋ねる:不要な重複を排除する方法は?

各写真から1枚ずつ残す必要がありますが、全く同じですが、ファイル名が異なる写真が3枚ある場合、そのうちの1つだけを守らなければならない、重複した写真が表示されないようにするにはどうすればよいですか?

答え1

Fdupesを使用して下さい:

fdupes -dN .

彼氏:

   -d --delete
          prompt user for files to  preserve,  deleting  all  others  (see
          CAVEATS below)

   -N --noprompt
          when  used  together  with  --delete, preserve the first file in
          each set of duplicates and delete the others  without  prompting
          the user

答え2

このスクリプトは bash の連想配列を使用してチェックサムをアーカイブし、重複した項目を報告します。よかったら、次のようにecho変更してください(編集証がひどい場合は、次のように変更してください)。rmrm -i

#!/usr/bin/env bash
declare -A sums
for f in *
do
  if [[ ! -f "$f" ]]; then continue; fi
  c=$(cksum "$f" | awk '{print $1}')
  [[ -n "${sums[$c]}" ]] && echo "# rm \"$f\" -- duplicate of ${sums[$c]}"
  sums[$c]="$f"
done

関連情報