Como posso remover arquivos duplicados em árvores de diretório separadas?

10

Eu tenho dois diretórios: old/e new/. Alguns dos arquivos old/são duplicados daqueles em new/. Alguns meramente têm o mesmo nome, e alguns podem até ter conteúdo idêntico, mas nomes diferentes. Não estou interessado no caminho do subdiretório para os arquivos, portanto, apenas um nome de arquivo não qualificado precisa ser considerado na correspondência.

Quero remover os arquivos duplicados de old/, para que eles contenham apenas arquivos não encontrados também em new/. Nos casos em que os nomes de arquivos correspondem, mas não o conteúdo, ou vice-versa, desejo que isso seja listado em algum log.

Alguém já encontrou um problema semelhante ou tem uma solução melhor do que cortar um script (perl ou similar) do zero? Um tempo de execução dominado pela chamada md5sumde cada arquivo é aceitável.

P-Nuts
fonte

Respostas:

7

Claro! Confira o FSlint :

O FSlint é um utilitário para encontrar e limpar várias formas de cotão em um sistema de arquivos. Ou seja, fragmentos indesejados ou problemáticos em seus arquivos ou nomes de arquivos. Por exemplo, uma forma de cotão encontrada são os arquivos duplicados. Possui os modos GUI e linha de comando.

texto alternativo

FSlint é um software livre e de código aberto.

John T
fonte
Isso parece perto o suficiente para o que eu quero. Obrigado!
P-Nuts
8

fdupes - localiza arquivos duplicados em um determinado conjunto de diretórios

fdupes new/ old/

-d para excluir

-N por não perguntar

fdupes -N -d new/ old/
Cristian Ciupitu
fonte
Isso também não encontrará (e excluir) duplicatas em cada diretório? Em outras palavras, se novos (ou antigos) contiverem arquivos duplicados que podem ou não ser encontrados em antigos, eles também serão excluídos? Eu não acho que o fdupes seja estritamente um programa diferente, como está implícito nos seus argumentos "novo" e "velho".
Stephen Niedzielski