É possível encontrar arquivos duplicados no meu disco que sejam um pouco idênticos, mas que tenham nomes de arquivos diferentes?
files
duplicate-files
aluna
fonte
fonte
st_size
s correspondentes , eliminando aqueles com apenas um dos mesmos e calculando apenas md5sums parast_size
s correspondentes .Respostas:
fdupes
posso fazer isso. Deman fdupes
:No Debian ou Ubuntu, você pode instalá-lo com
apt-get install fdupes
. No Fedora / Red Hat / CentOS, você pode instalá-loyum install fdupes
. No Arch Linux você pode usarpacman -S fdupes
, e no Gentooemerge fdupes
,.Para executar uma verificação descendente da raiz do sistema de arquivos, que provavelmente levará uma quantidade significativa de tempo e memória, use algo como
fdupes -r /
.Conforme solicitado nos comentários, você pode obter as maiores duplicatas fazendo o seguinte:
Isso será interrompido se seus nomes de arquivos contiverem novas linhas.
fonte
fdupes ....... | xargs ls -alhd | egrep 'M |G '
para manter os arquivos em formato legível por seres humanos e somente aqueles com tamanho em megabytes ou gigabytes. Mude o comando para se adequar às saídas reais.du
canalsort
será direcionado a você.Outra boa ferramenta é
fslint
:Em sistemas baseados em debian, você pode instalá-lo com:
Você também pode fazer isso manualmente se não desejar ou não puder instalar ferramentas de terceiros. A maneira como a maioria desses programas funciona é calculando as somas de verificação de arquivos . Arquivos com o mesmo md5sum quase certamente contêm exatamente os mesmos dados. Então, você poderia fazer algo assim:
Saída de amostra (os nomes de arquivo neste exemplo são os mesmos, mas também funcionará quando forem diferentes):
Isso será muito mais lento que as ferramentas dedicadas já mencionadas, mas funcionará.
fonte
st_size
, eliminando qualquer arquivo que tenha apenas um arquivo desse tamanho e calculando o md5sums apenas entre arquivos com o mesmost_size
.Resposta curta: sim.
Versão mais longa: dê uma olhada na entrada wikipedia fdupes , que ostenta uma lista bastante agradável de soluções prontas. Claro que você pode escrever seu próprio, não é que difícil - programas de hashing como
diff
,sha*sum
,find
,sort
euniq
deve fazer o trabalho. Você pode até colocá-lo em uma linha e ainda será compreensível.fonte
Se você acredita que uma função de hash (aqui MD5) está livre de colisões no seu domínio:
Deseja nomes de arquivos idênticos agrupados? Escreva um script simples
not_uniq.sh
para formatar a saída:Então mude o
find
comando para usar seu script:Essa é uma ideia básica. Provavelmente você deve mudar
find
se os nomes dos seus arquivos contiverem alguns caracteres. (por exemplo, espaço)fonte
Eu pensei em adicionar um fork melhorado recente de fdupes, jdupes , que promete ser mais rápido e mais rico em recursos do que os fdupes (por exemplo, filtro de tamanho):
Isso encontrará recursivamente arquivos duplicados maiores que 50 MB no diretório atual e produzirá a lista resultante em myjdups.txt.
Observe que a saída não é classificada por tamanho e, como parece não ser incorporada, adaptei a resposta @Chris_Down acima para conseguir isso:
fonte
A Wikipedia tinha um artigo ( http://en.wikipedia.org/wiki/List_of_duplicate_file_finders ), com uma lista de softwares de código aberto disponíveis para esta tarefa, mas agora foi excluído .
Acrescentarei que a versão GUI do fslint é muito interessante, permitindo usar a máscara para selecionar os arquivos a serem excluídos. Muito útil para limpar fotos duplicadas.
No Linux você pode usar:
Os 2 últimos trabalhos em muitos sistemas (windows, mac e linux) não verifiquei o FSLint
fonte
Aqui está a minha opinião sobre isso:
É diferente, pois apenas hashes até 1 MB do arquivo.
Isso tem alguns problemas / recursos:
Eu o uso para comparar clipes de vídeo, então isso é suficiente para mim.
fonte