Estou tentando encontrar uma maneira de verificar dentro de um determinado diretório arquivos duplicados (mesmo com nomes diferentes) e substituí-los por links simbólicos apontando para a primeira ocorrência. Eu tentei com, fdupes
mas apenas lista essas duplicatas.
Esse é o contexto: estou personalizando um tema de ícone ao meu gosto, e descobri que muitos ícones, mesmo que tenham nomes diferentes e locais diferentes dentro de sua pasta pai, e sejam usados para propósitos diferentes, basicamente são os mesmos cenário. Como aplicar a mesma modificação vinte ou trinta vezes é redundante quando apenas uma é realmente necessária, quero manter apenas uma imagem e vincular todas as outras.
Como exemplo, se eu executar fdupes -r ./
dentro do diretório testdir
, ele poderá retornar os seguintes resultados:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
Dada essa saída, eu gostaria de manter apenas o arquivo file1.png
, excluir todos os outros e substituí-los por links simbólicos apontando para ele, mantendo todos os nomes de arquivos originais. Portanto file2.png
, manterá seu nome, mas se tornará um link para, em file1.png
vez de ser uma duplicata.
Esses links não devem apontar para um caminho absoluto, mas devem ser relativos ao testdir
diretório pai ; ou seja yetanotherfile.png
, será apontar para ../../file1.png
, não para/home/testuser/.icons/testdir/file1.png
Estou interessado tanto em soluções que envolvem uma GUI e CLI. Não é obrigatório usar o fdupes
que citei, porque é uma ferramenta que eu conheço, mas estou aberto a soluções que usam outras ferramentas também.
Tenho certeza de que um script bash para lidar com tudo isso não deve ser tão difícil de criar, mas não sou especialista o suficiente para descobrir como escrevê-lo.
v1.51
(Ubuntu 14.04.2 LTS).