Encontre RARs com conteúdo duplicado

0

Eu preciso de um utilitário para encontrar arquivos RAR que contenham dados duplicados (ou seja, arquivos dentro do RAR que tenham o mesmo, mas que possam ter nomes diferentes).

Eu posso abrir os RARs e ver que os CRCs são os mesmos, mas eu estava esperando por um processo mais automatizado que funcionasse em massa (centenas de arquivos).

O hash do RAR geral não ajuda, porque o arquivo contido nele pode ter nomes diferentes ou o arquivo pode ser compactado em níveis diferentes.

Se necessário, um utilitário que extraia o conteúdo dos RARs e os compara, mas não é o preferido.

Eu preferiria um utilitário gratuito para Windows, mas um utilitário de pagamento ou um utilitário para Linux seria aceitável.

    
por Scott McClenning 21.11.2011 / 05:24

1 resposta

1

Você provavelmente poderia fazer tudo isso funcionar em uma etapa, mas seria mais fácil fazer algo assim (linux):

for i in *.rar ; do  unrar l $i | tail -n+8 | head -n-3 | awk -v val=$i '{ printf("\"%s\" \"%s\" \"%s\"\n",val,$1,$8)}' >> rarfiles; done

Isso passará por todos os arquivos no diretório atual e gerará todos os arquivos em rars em um arquivo chamado rarfiles, assim:

"rar name" "filename" "crc" 

Os comandos "head" e "tail" apenas retiram o cabeçalho e o rodapé da saída unrar. Então awk extrai o primeiro e oitavo campo, $ i (o nome do arquivo rar) é passado como um parâmetro via -v para que possamos imprimi-lo com a saída.

Então

 cat rarfiles | sort -k3,3 | uniq -D -f2

Isso exibirá as duplicações. Os parâmetros de ordenação estão dizendo que o terceiro campo (crc) deve ser ordenado, e uniq -D diz que exibe apenas linhas duplicadas, ignorando os dois primeiros campos (de modo que ignora "nome rar" e "nome do arquivo" para mostrar apenas dupes que têm o mesmo CRC.

    
por 21.11.2011 / 10:27