Se os arquivos forem duplicados exatos, o pós-processamento da saída de shasum * | sort
provavelmente ajudará. Salve-o em um arquivo, pois o cálculo pode demorar um pouco e você provavelmente precisará dele mais de uma vez:
shasum * | sort >/tmp/shasums
Por exemplo, para ver a propagação de arquivos idênticos (com apenas somas de verificação, não nomes de arquivos):
</tmp/shasums cut -d ' ' -f 1 | uniq -c
Aqui está uma maneira de ver os nomes dos arquivos e as contagens duplicadas:
</tmp/shasums sed 's/ .*//' | uniq -c - | join -1 2 - /tmp/shasums | sort -k 2,1
Sem o GNU uniq, não tenho nada melhor para oferecer para mostrar os nomes dos arquivos de uma maneira agradável do que o seguinte script Perl:
</tmp/shasums perl -lne '
s/^([^ ]*?) //; # set $1 to the checksum and $2 to the filename
push @{$names{$1}}, $_; # dispatch file names by checksum
END {
# iterate through the checksums, sorted by repeat count
foreach (sort {@$a <=> @$b} values %names) {
# print the repeat count and the file names
printf "%d %s\n", scalar(@$_), join(" ", @$_)
}
}'