我尝试使用apt-file list --regexp ".*"
,但是没有用,可能是因为返回的内容太多了。
答案1
您可以使用命令获取所有软件包的文件列表,apt-file list --regexp ".*"
但这需要花费一些时间来收集所有文件的列表。该命令的手册页中提到了这一点apt-file
:
-x, --regexp
Treat pattern as a (perl) regular expression. See perlreref(1) for
details. Without this option, pattern is treated as a literal
string to search for.
Be advised that this option can be rather slow. If performance is
an issue, consider giving apt-file non-regex pattern matching too
much and pipe the output to perl -ne '/<pattern-here>/'. This
enables apt-file to use more optimizations and leaves less work to
the "slower" regex.
提取所有已安装包的文件列表的另一种方法是使用以下命令:
for package in $(apt list --installed| awk -F"/" '{print $1}'); do
dpkg --listfiles "$package";
done
您可以根据您的要求调整输出。
如果您想要从 apt db 中提取所有软件包的文件列表,则应使用以下命令,apt-file
这将花费一些时间,因为 apt db 中通常有数千个软件包(取决于配置的存储库),因此需要列出数百万个文件。您可以使用以下任一命令:
apt list | awk -F"/" '{print $1}' > package_list
apt-file list -f package_list
或者
apt-file list --regexp ".*"
答案2
上市的另一种选择APT 缓存中所有包中的所有文件,正如@nightWolf 的建议所利用的apt
,这在脚本中并不好......
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
#!/bin/bash
for package in $( \
apt-cache dump \
| grep -e "^Package" \
| awk '{print $2}' \
| sort )
do
apt-file list "$package";
done
再次,无论你如何尝试,这个任务都很慢。APT 缓存数据库是存在的,并且有执行所有相关搜索的工具。将这些信息转储为文本似乎没有用。