No meu sistema, tenho arquivos que não pertencem a nenhum pacote, eles são meus ou de programas compilados instalados com make install
. Como posso encontrar todos os arquivos que não pertencem a nenhum pacote?
fonte
No meu sistema, tenho arquivos que não pertencem a nenhum pacote, eles são meus ou de programas compilados instalados com make install
. Como posso encontrar todos os arquivos que não pertencem a nenhum pacote?
Em /var/lib/dpkg/info
são .list
arquivos de texto que lista todos os arquivos contidos em cada package¹ instalado através do gerenciador de pacotes do Debian.
Encontrar todos os arquivos no sistema de arquivos que não correspondam a nenhuma entrada pode ser alcançado com algo ingênuo como este:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Obviamente, isso levará muito tempo, pois todo o sistema de arquivos será verificado. Se você usar partições diferentes para diretórios do sistema (como /usr
ou /var
), especifique-as após a inicial /
.
Aviso: Isso não inclui arquivos criados por scripts de pacote. Por exemplo:
/etc/hosts.allow
não está listado em nenhum lugar, mas pode vir do libwrap0
que possivelmente o tenha criado, se esse arquivo não existisse no momento da instalação do pacote..pyc
arquivos (bibliotecas Python compiladas), .elc
arquivos ( bibliotecas Emacs Lisp compiladas), etc.
find: argument list too long
/var/lib/dpkg/info/*.list
- a consulta acima precisaria ser reescrita sob outro princípio.Uma versão mais eficiente da @ solução de Patrice , usando um shell com suporte para substituição de processo (
bash
, AT & Tksh
,zsh
):Como a solução de Patrice, ela assume que nenhum caminho de arquivo contém caracteres de nova linha.
fonte
locate
banco de dados seria mais rápido do que em execuçãofind
?locate \* | grep -v "^/home/"
- também tem o benefício de procurar/boot/
e outras partições do sistema.Como você marcou sua pergunta com
debian
a opção óbvia ainda não mencionada, ela deve ser usadacruft-ng
se você não precisar de flexibilidade oucruft
se não quiser pesquisar em todo o sistema / localizadob.fonte
Você também pode usar a substituição do processo &
grep
&find
. Observe que elegrep
é usado duas vezes para filtrar apenas caminhos relevantes/var/lib/dpkg/info
e economizar alguns segundos se você estiver procurando por arquivos em um determinado diretório.fonte