Respuestas:
En /var/lib/dpkg/info
son .list
archivos 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 /usr
o /var
), especifíquelas después de la inicial /
.
Advertencia: Eso no incluye archivos creados por scripts de paquetes. Por ejemplo:
/etc/hosts.allow
no aparece en ninguna parte, pero podría provenir de lo libwrap0
que posiblemente lo creó, si ese archivo no existía en el momento de la instalación del paquete..pyc
archivos (bibliotecas compiladas de Python), .elc
archivos ( 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.
locate
base 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 grep
se usa dos veces para filtrar solo las rutas relevantes /var/lib/dpkg/info
para 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