Bash 如何在目录中查找具有相同内容的文件

  • 本文关键字:文件 查找 Bash bash diff
  • 更新时间 :
  • 英文 :


如何在脚本中使用 diff 命令来显示目录中具有相同内容的所有文件?也许我应该提供更多细节。

脚本应在指定的目录和子目录,并将它们显示在排序的终端中文件大小的降序。

diff

这样做;你需要将每个文件与每个文件进行比较,一般来说,这不是diff要做的。

我建议使用 find 打印相关树中所有文件的列表,并按大小对它们进行排序。 仅当两个文件的大小相同时,比较它们的内容才有意义。 除非您有大量大小完全相同的文件,否则这将大大加快该过程:

find . -type f -printf "%s %pn" | sort -n | {
  oldSize=none
  while read size path
  do
    if [ "$oldSize" = "$size" ]
    then
      cmp -s "$oldPath" "$path" && echo "$oldPath equals $path"
    fi
    oldPath=$path
    oldSize=$size
  done
}

从理论上讲,此脚本可能无法找到双精度,即如果有多个大小相同的文件,并且只有其中一些真正相等的内容。 如果它们按排序排序为 A B A(当然取决于它们的路径名),则永远不会比较 A 和 A,因此它们不会被注意到。

相关内容

  • 没有找到相关文章

最新更新