Answers:
其中/var/lib/dpkg/info
的.list
文本文件列出了通过Debian的软件包管理器安装的每个软件包¹中包含的所有文件。
在文件系统中查找与任何条目都不匹配的所有文件都可以通过这样的简单操作来实现:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
显然,这将花费很长时间,因为将扫描整个文件系统。如果您对系统目录使用不同的分区(例如/usr
或/var
),请在initial之后指定它们/
。
警告:这并没有包括由包脚本创建的文件。例如:
/etc/hosts.allow
没有在任何地方列出,但是libwrap0
如果在安装软件包时该文件不存在,则它可能来自创建该文件的地方。.pyc
文件(已编译的Python库),.elc
文件(已编译的Emacs Lisp librarires)等。/var/lib/dpkg/info/*.list
-以上查询将需要根据其他原则进行重写。
@Patrice解决方案的更有效版本,使用支持进程替换的外壳程序(bash
,AT&T ksh
,zsh
):
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
像Patrice的解决方案一样,它假定没有文件路径包含换行符。
locate
数据库比运行数据库快find
吗?locate \* | grep -v "^/home/"
-还具有查看/boot/
和其他系统分区的优势。
find: argument list too long