如何获得apt-get autoremove选择的软件包的列表?


13

是否有任何命令仅打印所选软件包的名称apt-get autoremove?我正在创建一个脚本来更新内核,删除旧的内核和不必要的软件包(apt-get autoremove),但是我想在屏幕上打印将被删除的软件包列表,apt-get autoremove我该怎么做?


您应该只能够运行它,sudo apt-get autoremove -y并且它应该自动删除所有需要删除的内容...

尝试在这里阅读,[可能会有帮助。] [1] [1]:serverfault.com/questions/433250/…–
Doug

要获取软件包列表而不实际删除它们,您可以这样做sudo apt-get --dry-run autoremove
heemayl 2015年

我只想获取软件包的名称,而不是命令的整个输出....
Afonso Sousa 2015年

Answers:


13

由于根据您的评论,您只想列出将要删除的软件包:

apt-get --dry-run autoremove | grep -Po '^Remv \K[^ ]+'

grep 命令细目:

  • -P:将给定的模式解释为PCRE(与Perl兼容的正则表达式)模式
  • -o:仅打印匹配的字符串,而不打印整行

正则表达式细分:

  • ^:匹配行的开头
  • Remv:匹配Remv字符串
  • \K:从匹配的字符串中排除先前匹配的子字符串
  • [^ ]+:不匹配一个或多个字符
$ apt-get --dry-run autoremove | grep -Po 'Remv \K[^ ]+'
libapache2-mod-php5
php5-readline
php5-cli
libonig2
libqdbm14
php5-json
php5-common 

1
@GeekLynxAfonso,您不需要使用sudowith --dry-run选项。
jarno 2015年

@jarno很有道理,我可能并没有想到不需要它。谢谢
kos 2015年

2

实际上,您只需要过滤您的输出

sudo apt-get autoremove --dry-run 

命令。

例如,您可以使用

sudo apt-get autoremove --dry-run  | head -n 5 | tail -n 1

您的命令也有效!但是我更喜欢kos的命令。:)
阿方索·索萨
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.