【问题标题】:Removing duplicate files with same size in shell script在shell脚本中删除具有相同大小的重复文件
【发布时间】:2017-03-10 18:54:13
【问题描述】:

我有一个目录,其中包含具有相同内容但名称不同的多个文件,我认为删除重复项的唯一标准是根据大小对它们进行排序,然后删除具有相同大小的文件,例如当我键入时

 find . -type f -printf "%p - %s\n" | uniq -D -f1 | sort -nr -k3

我明白了

   ./abc.txt - 595
   ./acd.txt - 595
   ./dbc.txt - 595
   ./jed.txt - 595
   ./end.txt - 595
   ./wtw.txt - 595
   ./hds.txt - 595
   ./dkd.txt - 523
   ./kjk.txt - 523

我只想保留

   ./abc.txt 
   ./dkd.txt

【问题讨论】:

  • 相同大小并不能保证是同一个文件。如果要比较文件内容,请使用文件的总和(md5、sha1、sha256 等)并比较它们。

标签: shell duplicates


【解决方案1】:
find . -type f -printf "%p - %s\n" | uniq -D -f1 | sort -nr -k3
  • uniq 需要对输入进行排序,因此您必须将 sort 放在其前面。

  • uniq 选项 -D 在这里不合适。

  • sort 选项-u 可以完成uniq 的工作。


find . -type f -printf "%p - %s\n" | sort -nru -k3

【讨论】:

    【解决方案2】:

    您可以通过以下方式复制一个版本的副本:

    find . -type f -printf "%p - %s\n" | uniq -d -f1 | cut -d' ' -f1 | xargs -I{} cp {} /path/to/dir
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 2013-09-01
      • 2017-03-02
      • 2016-04-20
      • 2012-12-20
      相关资源
      最近更新 更多