如何使用dpkg列出所有以字母a开头的已下载软件包?
如何使用dpkg列出所有以字母a开头的已下载软件包?
首先得说清楚,你之前的命令出问题的原因:你用的dpkg -l | grep "a*"完全没达到预期,是因为grep里的a*是正则表达式语法,它代表“匹配0个或多个a”,这会导致几乎所有行都被匹配到,而且dpkg -l的输出里软件包名称并不是在行的开头,所以这个过滤逻辑完全不对。
下面给你几个靠谱的解决方法:
最推荐的方法:直接用dpkg内置的通配符过滤
其实dpkg本身就支持用通配符来筛选软件包名称,根本不需要用grep。直接运行:dpkg -l "a*"这个命令会让dpkg直接列出所有名称以
a开头的已安装软件包,输出是标准的dpkg列表格式,清晰又高效。如果一定要用grep过滤的话
dpkg -l的每行开头是两个字符的状态标识(比如ii表示已正常安装的软件包),后面跟着空格才是软件包名称。所以要精准匹配名称以a开头的行,可以用:dpkg -l | grep "^.. a"这里
^表示行的开头,..匹配前两个状态字符,后面的空格和a确保我们匹配的是软件包名称的第一个字符为a的行。用awk更精准地定位列
如果你想更严谨地针对软件包名称列(dpkg -l的第二列)过滤,awk是个好选择:dpkg -l | awk '$2 ~ /^a/'这个命令让awk检查第二列是否以
a开头,结果同样准确。
另外补充一下:如果你说的“已下载文件”是指保存在apt缓存里的.deb安装包(不是已安装的软件包),那可以直接查看缓存目录:
ls /var/cache/apt/archives/a*.deb
备注:内容来源于stack exchange,提问作者blablabla
相关产品推荐
相关产品推荐

