来源:自学PHP网 时间:2015-04-14 10:28 作者: 阅读:次
[导读] ! bin bash name:remove_one sh 用途:查找并删除重复文件,每个文件只保留一个样本 将文件依据大小排序并输出ls -lS | awk BEGIN { 得到第一行total总数并丢弃,读取下一行 getline;getlin...
#!/bin/bash
#name:remove_one.sh #用途:查找并删除重复文件,每个文件只保留一个样本 #将文件依据大小排序并输出 ls -lS | awk 'BEGIN { #得到第一行total总数并丢弃,读取下一行 getline;getline; name1=$9;size=$5; } { name2=$9; if(size==$5) #大小一样的可能是内容相同的文件 { #用md5进行校验和 ("md5sum "name1)|getline; csum1=$1; ("md5sum "name2)|getline; csum2=$1; #如果校验和相同则为内容相同的文集,输出名字 if( csum1==csum2 ) { {print name1;print name2} } }; size=$5;name1=name2; }' | sort -u > duplicate_files #计算重复文件的md5sum,将重复文件中的一采样写入duplicate_sample中 cat duplicate_files|xargs -I {} md5sum {}| sort | uniq -w 32 | awk '{print $2}' | sort -u > duplicate_sample echo Removing... #删除在duplicate_files中列出且未被duplicate_sample列出的全部文件 comm duplicate_files duplicate_sample -2 -3|tee /dev/stderr|xargs rm echo Removed duplicates files successfully -------------------------------------------------------- 执行: [root@node1 tmp]# sh remove_one.sh 过滤的是当前目录下的,不处理目录,不递归处理子目录 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com