Is there any command that prints only the name of the packages that apt-get autoremove
selects? I'm creating a script that updates the kernel, removes the old kernel and the unnecessary packages (apt-get autoremove
), but I want to print on the screen the list of packages that will be removed by apt-get autoremove
, how can I do this?
4 Answers
Since as per your comment you want to list only the packages that are going to be removed:
apt-get --dry-run autoremove | grep -Po '^Remv \K[^ ]+'
grep
command breakdown:
-P
: Interprets the given pattern as a PCRE (Perl Compatible Regular Expression) pattern-o
: Prints only the matched string instead of the whole line
Regex breakdown:
^
: matches the start of the lineRemv
: matches aRemv
string\K
: excludes the previously matched substring from the matched string[^ ]+
: matches one or more characters not
$ apt-get --dry-run autoremove | grep -Po 'Remv \K[^ ]+'
libapache2-mod-php5
php5-readline
php5-cli
libonig2
libqdbm14
php5-json
php5-common
-
2
-
1@jarno Makes sense, the fact that it was probably not needed didn't occur to me. Thanks– kosDec 23, 2015 at 10:41
Actually you only need to filter the output of your
sudo apt-get autoremove --dry-run
command.
For instance you can do it with
sudo apt-get autoremove --dry-run | head -n 5 | tail -n 1
-
1Your command works too!! But I prefer the kos's command... But thanks in same!! :) Jul 25, 2015 at 14:23
No need for apt-get
in modern apt versions. You can use
apt autoremove --dry-run
-
Thats necro-bumping. At the time of the question you had to use apt-get ;-) Oct 22, 2022 at 21:23
Using apt-patterns (see man 7 apt-patterns
) one can simply do:
apt list '?garbage'
sudo apt-get autoremove -y
and it should autoremove anything needed to be removed...sudo apt-get --dry-run autoremove