查找目录中内容相同的所有文件夹

And*_*een 10 directory shell-script file-comparison

在 Ubuntu 中,是否可以在目录中找到重复的文件夹(即内容相同的文件夹)?我认为已经有一些命令行工具可用于查找重复文件(例如 fdupes),但我想改为查找重复文件夹。也就是说,查找在它们包含的文件内容方面匹配的文件夹(尽管文件名和其他元数据可能不同)。

Chr*_*own 5

#!/bin/bash
shopt -s dotglob

for file in "$1"/*; do [[ -f "$file" ]] && d1+=( "$(md5sum < "$file")" ); done
for file in "$2"/*; do [[ -f "$file" ]] && d2+=( "$(md5sum < "$file")" ); done 

[[ "$(sort <<< "${d1[*]}")" == "$(sort <<< "${d2[*]}")" ]] && echo "Same" || echo "Different"
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到它的实际效果:

$ mkdir 1 2
$ ./comparedirs 1 2
Same
$ cat > 1/1 <<< foo
$ cat > 2/1 <<< foo
$ ./comparedirs 1 2
Same
$ cat > 2/1 <<< bar
$ ./comparedirs 1 2
Different
Run Code Online (Sandbox Code Playgroud)