复制代码到 filename
chmod a+x filename
./filename /etc
______________________________________________
要支持中文: LANG=zh_CN.GB2312 或 GB18030
--------------------------------------------------------------------------
#!/bin/bash
if [ $UID -ne 0 ];then
echo "error: you are not the root ...."
exit 1
fi
if [ -z "$1" ];then
path='.'
else
path=$1
fi
echo 操作目录为: $path
sleep 1
if [ ! -w /mnt ];then
echo "Directory /mnt not allowd to write "
echo " chage the mod (y/n)?"
read mod
case $mod in
y|yes|Y|YES)
chmod 777 /mnt
sleep 1
echo "you can write now ..."
;;
n|no|N|NO)
OK,exiting....;sleep 1;exit 0
;;
*)
exit 0
;;
esac
fi
rmfile()
{
rm -fr /mnt/md5sum.log >/dev/null 2>&1
rm -fr /mnt/name1.log >/dev/null 2>&1
rm -fr /mnt/name2.log >/dev/null 2>&1
rm -fr /mnt/rmlist.log >/dev/null 2>&1
rm -fr /mnt/filename.log >/dev/null 2>&1
}
echo_()
{
echo "______________________________"
}
rmfile
ls -lh $path | grep '^-'|awk '{print $NF}'>/mnt/filename.log
sum=`cat /mnt/filename.log|wc -l`
echo_
echo 此目录中的文件有。。。。
echo_;sleep 1
cat /mnt/filename.log
echo_;sleep 1
echo;echo_
echo 共有文件数$sum ......
echo_;echo;sleep 1;echo_
echo "Md5sum 校验中.....";sleep 1
while read line ;do md5sum $path/$line;doneecho "校验完成。。。。";echo_;sleep 1
unset name
name=`cat /mnt/md5sum.log |awk '{print $NF}'`
for var in $name;do echo ${var##*/};done>/mnt/name1.log
echo '/mnt/name1.log___listing....';sleep 1
cat /mnt/name1.log
echo_;sleep 1
unset name
name=`sort /mnt/md5sum.log | uniq -w 32 | awk '{print $NF}'`
for var in $name;do echo ${var##*/};done>/mnt/name2.log
echo '/mnt/name2.log___listing....';sleep 1
cat /mnt/name2.log;sleep 1;echo_
sort /mnt/name1.log -o /mnt/name1.log;sort /mnt/name2.log -o /mnt/name2.log
comm /mnt/name1.log /mnt/name2.log -2 -3 >/mnt/rmlist.log
echo 将要删除的文件:
cat /mnt/rmlist.log
echo 需要删除`cat /mnt/rmlist.log|wc -l`个文件。。。;echo_;sleep 1
rmlist=`cat /mnt/rmlist.log`
[ -z "$rmlist" ]&&echo 没有重复文件。。。;sleep 1
rmfile
for var in $rmlist
do
echo -n "Deleting file \"$var\" .............";sleep 1
(rm -fr $path/$var;[ $? -eq 0 ]&&echo successfully)
if [ $? -ne 0 ];then
echo_;lsattr $path/$var;echo_
read -p "FOrce Delete ?(y/n):" CHOICE
case $CHOICE in
y|Y|YES|yes)
chattr -i $path/$var
chattr -a $path/$var
rm -fr $path/$var >/dev/null 2>&1;[ $? -eq 0 ] &&(echo; echo "File \"$path/$var\" has been deleted successfully";echo)
;;
*)
echo ok,pass....;sleep 1
;;
esac
fi
done
[ $? -eq 0 ]&&echo "DELETE SUCCESSFULLY ........";sleep 1
echo exiting....... ;sleep 1
exit 0
516434297 于 2013-06-28 23:01:11发表:
学习 谢谢分享
pl_014 于 2013-03-30 07:57:01发表:
还是用sha512吧,md5的码位太少,碰上重复的还是难免的。
uxwoldsh 于 2013-03-29 21:26:26发表:
沙发