Ferramentas Linux para encontrar arquivos duplicados?

13

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.)

Daryl Spitzer
fonte
Estou assumindo que os nomes de arquivos não são duplicados, apenas o conteúdo?
mfinni
pixelbeat.org/fslint, se você estiver procurando pelo conteúdo acima, pode ajudá-lo. :)
Rajat

Respostas:

22

Há os fdupes . Mas eu costumo usar uma combinação defind . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36

Hubert Kario
fonte
1
Esta variação trabalhou para mim: find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 (eu usei -D uniq, e eu prefiro xargs para encontrar-exec.)
Daryl Spitzer
+1 Eu não estava ciente dos fdupes, essa ferramenta parece muito útil.
Zoredache
3
@ Daryl: Usar xargsassim não funciona para nomes de arquivos com espaços em branco, -execmas usar . Usar -type fcomo argumento adicional para find(pode ser usado junto com -name) restringe a pesquisa a arquivos.
fuenfundachtzig
+1 para fdupes, pois também é rápido para arquivos binários enormes.
Bengt
Em algumas raras ocasiões, tive xargs não funcionando (travando após uma certa quantidade de arquivos processados), mas não encontrei -exec, que funcionava o tempo todo. @fuenfundachtzig, pode-se usar xargs -0 --delimiter = "\ n" para lidar com esse tipo de arquivo.
precisa saber é o seguinte
6

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

falsificador
fonte
+1 para FSlint. Interface muito intuitiva e poderosas opções de personalização.
Glutanimate
3

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.

Zoredache
fonte
2
Você pode reduzir o número de md5sums calculados calculando apenas o md5sums para arquivos com tamanho, para os quais há mais de um arquivo desse tamanho. Portanto, para todos os arquivos com tamanho único em bytes, não é necessário um md5sum, pois eles não podem ser duplicados de nada.
tomsv