Images
去重圖像文件
[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]$
一個目錄中有很多jpg文件。許多文件是重複的,但如果它們的 cksum 相同,我可以發現它們。有時同一張圖片有 2 或 3 個文件。
**問:**如何刪除不需要的重複項?
我需要從每張圖片中保留 1 張,所以如果有 3 張完全相同但文件名不同的圖片,則應該只保留其中一張,這樣就不會出現重複的圖片,該怎麼做?
使用 fdupes:
fdupes -dN .
人 fdupes:
-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
該腳本在 bash 中使用關聯數組來保存校驗和,然後報告重複項;如果它看起來不錯(或者更偏執) ,則將其更改
echo
為:rm``rm -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