/note/tech

指定したディレクトリ以下のファイルのチェックサムを取得して重複ファイルを抽出するシェルスクリプト

この画像、既にダウンロード済みだったような? みたいな時に使う。

IFS=$'\n'
FILE_LIST=./files.txt
DUPLICATE_LIST=./duplicates.txt
RESULT_FILE=./result.txt
TARGET=.

cp /dev/null ${FILE_LIST}
cp /dev/null ${DUPLICATE_LIST}
cp /dev/null ${RESULT_FILE}

for file in `find ${TARGET} -type f`
do
  md5sum ${file}|\
  tee -a ${FILE_LIST}
done

cat ${FILE_LIST} |\
cut -d" " -f1 |\
sort |\
uniq -d |\
tee -a ${DUPLICATE_LIST}

for hash in `cat ${DUPLICATE_LIST}`
do
  grep ${hash} ${FILE_LIST} | tee -a ${RESULT_FILE}
done