Respuestas:
En /var/lib/dpkg/infoson .listarchivos de texto que lista todos los archivos contenidos en cada package¹ instalado a través del gestor de paquetes de Debian.
Encontrar todos los archivos en el sistema de archivos que no coincidan con ninguna entrada se puede lograr con algo ingenuo como este:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Obviamente, esto llevará mucho tiempo ya que se escaneará todo el sistema de archivos. Si utiliza diferentes particiones para los directorios del sistema (como /usro /var), especifíquelas después de la inicial /.
Advertencia: Eso no incluye archivos creados por scripts de paquetes. Por ejemplo:
/etc/hosts.allowno aparece en ninguna parte, pero podría provenir de lo libwrap0que posiblemente lo creó, si ese archivo no existía en el momento de la instalación del paquete..pycarchivos (bibliotecas compiladas de Python), .elcarchivos ( bibliotecas compiladas de Emacs Lisp), etc./var/lib/dpkg/info/*.list: la consulta anterior debería reescribirse bajo algún otro principio.
Una versión más eficiente de la solución de @ Patrice , utilizando un shell con soporte para la sustitución de procesos ( bash, AT&T ksh, zsh):
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
Al igual que la solución de Patrice, supone que ninguna ruta de archivo contiene caracteres de nueva línea.
locatebase de datos sería más rápido que ejecutarlo find? locate \* | grep -v "^/home/"- también tiene la ventaja de buscar /boot/y otras particiones del sistema.
También puede usar la sustitución de procesos & grep& find. Tenga en cuenta que grepse usa dos veces para filtrar solo las rutas relevantes /var/lib/dpkg/infopara ahorrar unos segundos si está buscando archivos en un determinado directorio.
dir="/lib/x86_64-linux-gnu"
find "$dir" -type f \
| grep -v -x -F -f \
<(find '/var/lib/dpkg/info' -name '*.list' -print0 \
| xargs -0 grep -h -F "^$dir" \
| sort -u)
find: argument list too long