Eu tenho um conjunto grande e crescente de arquivos de texto, todos muito pequenos (menos de 100 bytes). Eu quero diferenciar cada par possível de arquivos e anotar quais duplicatas. Eu poderia escrever um script Python para fazer isso, mas estou me perguntando se existe uma ferramenta de linha de comando do Linux existente (ou talvez uma simples combinação de ferramentas) que faria isso?
Atualização (em resposta ao comentário do mfinni ): Os arquivos estão todos em um único diretório, portanto, todos têm nomes de arquivos diferentes. (Mas todos eles têm uma extensão de nome de arquivo em comum, facilitando a seleção de todos eles com um curinga.)
Respostas:
Há os fdupes . Mas eu costumo usar uma combinação de
find . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36
fonte
find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34
(eu usei -D uniq, e eu prefiro xargs para encontrar-exec.)xargs
assim não funciona para nomes de arquivos com espaços em branco,-exec
mas usar . Usar-type f
como argumento adicional parafind
(pode ser usado junto com-name
) restringe a pesquisa a arquivos.Bem, existe o FSlint - que eu não usei para esse caso em particular, mas devo ser capaz de lidar com isso: http://en.flossmanuals.net/FSlint/Introduction
fonte
Você quase certamente não quer diferenciar cada par de arquivos. Você provavelmente desejaria usar algo como md5sums para obter todas as somas de verificação de todos os arquivos e canalizá-las para alguma outra ferramenta que somente reportará somas de verificação duplicadas.
fonte