在统信uos终端中需通过dpkg -l获取已安装包的文件路径并用du统计真实磁盘占用,因dpkg -l的“安装大小”仅为.deb压缩体积;先过滤出状态为“ii”的包名,再批量扫描其安装路径(如/usr、/opt、/etc)的实际占用,最后按大小排序定位异常目录。

在统信UOS终端中快速定位占用磁盘空间最多的已安装软件包,需绕过图形界面直接解析dpkg数据库并关联实际磁盘占用,因为单纯查包名无法反映真实空间消耗——有些包体积小但安装后生成大量缓存或日志,必须结合du扫描其安装路径。
用dpkg和du联动查包的实际磁盘占用
这一步不能只依赖dpkg -l输出的“安装大小”字段,该字段是.deb包本身的压缩体积,不是解压后的真实占用。真实空间由包安装的所有文件共同决定,必须扫描/usr、/opt、/etc等路径下的实际文件。
第一步:生成所有已安装包名列表,并过滤掉状态非“ii”的无效项:
dpkg -l | grep "^ii" | awk '{print $2}' > /tmp/pkglist.txt
第二步:为每个包查询其安装文件路径,再统计总大小——但直接对每个包执行du会极慢,改用高效批处理:
while read pkg; do echo "$(dpkg -L "$pkg" 2>/dev/null | xargs -r du -sh 2>/dev/null | awk '{sum += $1} END {print sum " " ENVIRON["pkg"]}')"; done
注意:dpkg -L可能因权限不足跳过系统保护目录(如/var/lib/dpkg),【若结果为空或明显偏小,需加sudo执行整个管道】,否则/root/.cache、/var/log等关键区域不会被计入。
用apt list配合du快速筛查大体积应用
适用于只想快速看到前10个最占空间的图形应用,跳过底层库和系统服务,节省时间。
方法一:先提取所有通过apt安装的图形应用名(排除lib开头的库包):
apt list --installed 2>/dev/null | sed '1d' | cut -d'/' -f1 | grep -v '^lib' > /tmp/guiapps.txt
方法二:批量扫描这些应用的主程序所在目录(通常在/usr/bin或/opt下):
while read app; do which "$app" 2>/dev/null | xargs -r dirname | xargs -r du -sh 2>/dev/null | head -1; done
这一步会漏掉没有命令行入口的纯GUI应用(如部分.dpkg安装的WPS独立版),但覆盖了90%以上用户常用软件。
直接扫描/opt和/usr/share目录定位第三方大包
/opt是商业软件和独立打包应用的默认落点,/usr/share存放大量图标、文档、模板等资源,这两处常藏有单个体积超500MB的包。
执行:
sudo du -sh /opt/* /usr/share/* 2>/dev/null | sort -rh | head -15
如果发现某目录如/opt/deepin-wine-tools或/usr/share/gedit占用了3GB以上,基本可判定是它导致空间紧张。此时无需再查包名,直接进入该目录用ls -lh查看内部最大文件即可。











