欢迎来到山村网

linuxshell删除重复文件只保留一份

2019-03-09 12:28:48浏览:332 来源:山村网   
核心摘要:  #!/bin/bash  #name:remove_one.sh  #用途:查找并删除重复文件,每个文件只保留一个样本  #将文件依据大小排序并输出

  #!/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

  过滤的是当前目录下的,不处理目录,不递归处理子目录

(责任编辑:豆豆)
下一篇:

WIFI中CMCC自动连接如何禁止

上一篇:

睡觉要不要关WiFi 睡觉要不要关无线路由器

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com