重複ファイル削除
先ほどの記事にてexiftoolで
写真の整理を行う方法を書いたが、この方法だとたくさんの重複ファイルが出来る可能性が
ある。
そこでmd5sumを用いて重複ファイルの整理を行うスクリプトを書いた。
#!/bin/bash # tmp_dir TMP_DIR=_TMP_DELETE_FILES_ TMP_FILE=_TMP_ONLY_UNIQ_LIST_ if [ ! -d ${TMP_DIR} ]; then mkdir ${TMP_DIR} fi find . -type f -maxdepth 1 -print0 | xargs -0 -I{} mv -iv {} "${TMP_DIR}" cd "${TMP_DIR}" find . -type f -maxdepth 1 -print0 | xargs -0 md5sum >> ${TMP_FILE} sort -rk 1 ${TMP_FILE} | uniq -w 32 | cut -d ' ' -f 3- | while read UNIQ_MD5_FILE do mv -iv "${UNIQ_MD5_FILE}" ../ done cd ../ rm ${TMP_FILE}
重複ファイルのあるディレクトリでこのスクリプトを実行すると、_TMP_DELETE_FILES_というディレクトリ
が作成され、その中に重複ファイルが入る。
後はそのディレクトリを丸ごと削除すればおk
yyyy-mm ディレクトリがたくさんある場合、for文で全てに実行出来る。
上記のスクリプトをOnlyUniqFile.shという名前で~/に保存したとすると、
$ cd ~/Pictures $ for i in * $ do $ cd "$i" $ ~/OnlyUniqFile.sh $ cd ../ $ done
これで全てのディレクトリに_TMP_DELETE_FILES_というディレクトリが出来て、
その中に重複ファイルが格納される。
全て削除するには、
$ find ~/Pictures -name "_TMP_DELETE_FILES_" -exec rm -rf {} +
で出来る。