Tenho uma biblioteca de fotos muito grande que abrange mais de 10 anos, gerenciada pela Shotwell. Recentemente, notei que meu sistema de arquivos relata muito mais arquivos para 2024 do que a Shotwell:
find -iname "*.jpg" -exec echo 1 \; | wc -l
relata 7681 arquivos- Shotwell com Ctrl-A em todos os eventos relata 3505 fotos e 20 filmes
Gostaria de me livrar de todas as fotos não rastreadas pelo Shotwell. O ideal seria que houvesse uma maneira de obter os nomes delas primeiro, mas apenas removê-las também seria bom. Existe uma maneira de fazer isso?
Não consegui encontrar uma maneira de fazer isso a partir da própria interface do Shotwell. Portanto, eu costumava
sqlite
extrair os caminhos de todos os arquivos conhecidos pelo Shotwell.Importante: O Shotwell armazena dados sobre vídeos e fotos em tabelas diferentes. É preciso consultar ambas, caso contrário, arquivos importantes serão julgados como desconhecidos para o Shotwell!
Executar os dois comandos seguintes produziu um arquivo com todas as fotos e vídeos conhecidos pelo Shotwell. Observe o
>>
no segundo comando, usado para anexar a saída.A lista de todos os arquivos na pasta de imagens pode ser obtida, por exemplo, usando fd :
fd . --type f ~/Images > ~/all-files
Talvez um pouco de pós-processamento em ambos os arquivos seja necessário para adaptar os nomes dos arquivos um ao outro, por exemplo, para tornar todos os caminhos absolutos ou relativos. Depois disso, ambos os arquivos precisam ser classificados usando o
sort
Por último, mas não menos importante, a ferramenta
comm
( link ) pode ser usada para encontrar arquivos disponíveis, mas desconhecidos para Shotwell:comm -23 ~/all-files ~/files-known-by-shotwell
.