Aqui está um exemplo que funcionaria com [t] csh, sh, etc., empregando 'find', 'awk', 'sort', 'uniq' e um liner / bin / sh para executar 'md5sum' para obtenha a assinatura de cada arquivo. Com a lista de assinaturas para os arquivos das duas estruturas de diretório, a sequência de comandos retornará os arquivos que são os mesmos:
encontre um / b / -type f -exec md5sum {} \; > / tmp / list; awk '{print $ 1}' '| awk '{print $ 2}' | sh -c 'enquanto lê s; faça awk "/ ^ $ s / {print \ $ 2}" / tmp / list; eco; feito'
Essencialmente, isso gera o md5sum para todos os arquivos no diretório 'a' e no diretório 'b'. As cadeias hexadecimais (primeira coluna) são alimentadas para um pipeline que filtra instâncias de apenas uma ocorrência para uma dada soma de verificação, passando o restante para um iterador / bin / sh que retira todos os arquivos reais correspondentes à soma de verificação (e insere o linha em branco entre os grupos.)
Ele separa os agrupamentos de duplicatas por uma linha em branco. Isso oferece a vantagem óbvia (acima e além da solicitação original) de encontrar arquivos duplicados com o mesmo conteúdo, mas com nomes de arquivos diferentes.