星期五, 四月 9

批量删除重复文件

半个月前一次手动删除重复文件,用了好几个小时,真是太费劲了,上网也没 找到什么好方法,感觉这样的脚本不是很难写但也费了不少劲。再测试下有没有问题,误删就惨了……
#!/bin/bash
# A simple tool to remove duplicate files in the current directory and its subdirectories.

all=`mktemp -t XXXXX`
keep=`mktemp -t XXXXX`
find -type f | sort | sed 's/ /\\ /g' > $all
cat $all | xargs md5sum 2>/dev/null | sort | uniq -w32 \
    | sed -e 's/^[0-9a-f]\{32\}  //g' -e 's/ /\\ /g' |sort >$keep
diff $all $keep | sed -e 's/^< \(\..*\)$/\1/g' -e 's/^[^\.].*$//g' | xargs rm -v

find -type d |sort -r |sed 's/ /\\ /g'|xargs rmdir 2>/dev/null

rm $all $keep



管道确实很强大。

没有评论:

发表评论