Antworten:
In /var/lib/dpkg/infobefinden sich .listTextdateien, in denen alle Dateien aufgelistet sind, die in jedem Paket enthalten sind¹, das über den Paketmanager von Debian installiert wurde.
Wenn Sie feststellen, dass alle Dateien im Dateisystem mit keinem Eintrag übereinstimmen, können Sie Folgendes erreichen:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Dies wird natürlich sehr lange dauern, da das gesamte Dateisystem gescannt wird. Wenn Sie unterschiedliche Partitionen für Systemverzeichnisse verwenden (z. B. /usroder /var), geben Sie diese nach der Initiale an /.
Warnung: Dies schließt keine Dateien ein, die von Paketskripten erstellt wurden. Zum Beispiel:
/etc/hosts.allowwird nirgendwo aufgelistet, aber es könnte von dem stammen libwrap0, der es möglicherweise erstellt hat, wenn diese Datei zum Zeitpunkt der Paketinstallation nicht vorhanden war..pycDateien (kompilierte Python-Bibliotheken), .elcDateien (kompilierte Emacs Lisp-Bibliotheken) usw./var/lib/dpkg/info/*.list- die obige Abfrage müsste nach einem anderen Prinzip neu geschrieben werden.
Eine effizientere Version der @ Patrice-Lösung , die eine Shell mit Unterstützung für die Prozessersetzung verwendet ( bash, AT & T ksh, zsh):
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
Wie bei Patrices Lösung wird davon ausgegangen, dass kein Dateipfad Zeilenumbruchzeichen enthält.
locateDatenbank schneller als die Ausführung find? locate \* | grep -v "^/home/"- hat auch den Vorteil, in /boot/und andere Systempartitionen zu schauen .
Sie können auch die Prozessersetzung & grep& verwenden find. Beachten Sie, dass das grepzweimal verwendet wird, um nur relevante Pfade zu filtern /var/lib/dpkg/info, um einige Sekunden zu sparen, wenn Sie nach Dateien in einem bestimmten Verzeichnis suchen.
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