美文网首页
3.4 查找并删除重复文件

3.4 查找并删除重复文件

作者: 拙言_Coder | 来源:发表于2019-03-21 15:20 被阅读0次

    《Linux Shell 脚本攻略(第 2 版)》读书笔记

    #!/bin/bash
    #文件名:remove_duplicates.sh
    #用途:查找并删除重复文件,每一个文件只保留一份
    
    ls -lS --time-style=long-iso | awk 'BEGIN {
      getline; getline;
      name1=$8; size=$5
    }
    {
      name2=$8; size2=$5;
      if (size==size2)
      {
        "md5sum " name1 | getline d; split(d, arr); csum1=arr[1];
        "md5sum " name2 | getline d; split(d, arr); csum2=arr[1];
        if (csum1==csum2)
        {
          print name1; print name2
        }
      };
    
      size=size2; name1=name2;
    }' | sort -u >duplicate_files
    
    cat duplicate_files | xargs -I {} md5sum {} | sort | uniq -w 32 | awk '{ print $2 }' | sort -u >duplicate_sample
    
    echo Removing...
    comm -2 -3 duplicate_files duplicate_sample | tee /dev/stderr | xargs rm
    echo Removed duplicates files successfully.
    

    注意,原书中的例子存在问题,运行结果不能正确删除重复文件。

    这里主要是学习awk命令的使用。

    相关文章

      网友评论

          本文标题:3.4 查找并删除重复文件

          本文链接:https://www.haomeiwen.com/subject/dwtcvqtx.html