在 Debian 中,当你查看一个软件包时,你会得到很多信息。包括压缩包的未压缩文件大小。有没有办法通过文件列表进行 grep 以便包按从最大到最低或从最低到最大的顺序显示?
这就是它通过 aptitude 出现的方式:-
[$] aptitude show leafpad | grep Uncompressed
Uncompressed Size: 739 k
我确信有一种方法可以做到同样的事情,但是怎么做呢?我在 zsh 上。
我正在寻找所有可用的软件包列表,并希望以人类可读的方式(即 KB/MB/GB 等)
不过,还是代表@Theophrastus 的努力。
答案1
使用资质 --sort
范围
理论上你应该能够使用资质直接搜索和排序设施 - 遗憾的是似乎有一个错误导致资质最后以未排序的顺序输出带有状态的包c
(已删除的包,配置文件仍在系统上):
aptitude -F '%p %I' search '!~v' --sort "installsize"
-F
用在哪里告诉资质如何格式化输出:%p
是包名称、%I
估计安装大小。查看该部分自定义包的显示方式在里面资质如果您想了解有关如何格式化的更多信息,请参考手册资质的输出。
搜索词!~v
选择所有非虚拟包:!
用于否定,~v
选择虚拟包。看看搜索词参考有关搜索包数据库的更多方法,请使用资质;例如:如果您只对已安装的软件包感兴趣,您可以使用~i
.
--sort
做了显而易见的事情资质按特定标准(逗号分隔的标准列表)对列表进行排序,并且 installsize
是未压缩/安装大小的标准;您可以通过添加~
条件来反转排序方向: ~installsize
。中有一个部分资质手册也适用于这些:自定义包裹的排序方式。
通过管道将包列表发送到sort
aptitude --disable-columns -F '%p %I' search '!~v' | sed 's/ \([^ ]\{1,2\}\)$/\1/' | sort -k2 -h | column -t
--disable-columns
是必要的,以免与排序列的选择混淆种类的-k
论点。
sed
是必需的,因为大小数字与其限定符之间的空格(即“4,897 MB”中的 MB)导致种类不选择--human-numeric-sort
( -h
) 的限定符。
排序后,column -t
将创建一个漂亮的、按列显示的软件包列表。
答案2
如果我理解正确的话,你想要这样的东西:
# apt-get install dctrl-tools
$ sort-dctrl -k Installed-Size:n /var/lib/apt/lists/*_Packages | grep-dctrl -ns Package,Installed-Size -
您得到的数字以 kB = 1024 字节为单位。转换输出将是一个单独的问题。