Isso pode ser feito usando a substituição de comandos . Por exemplo:
apt-get remove $(dpkg -l 'linux-*' | awk '/-4.4.0-([4-7][0-9]|80)-/ { print $2}')
Ou com dlocate
se você tiver instalado:
apt-get remove $(dlocate -k | grep -E -- '-4.4.0-([4-7][0-9]|80)-')
Ao contrário de qualquer solução envolvendo xargs
, a substituição de comando não altera o descritor de arquivo stdin de apt-get
, assim o apt-get pode receber entrada normalmente (por exemplo, respostas a perguntas debconf). xargs
obtém sua própria entrada de stdin, portanto, não deve ser usado com programas interativos, ou seja, programas que podem querer entrada de stdin.
Para usar apt-get
com xargs
, primeiro você precisa se certificar de que não fará perguntas, por exemplo:
export DEBIAN_FRONTEND=noninteractive
dlocate -k | grep -- -4.4.0- | xargs apt-get remove -y
Observação sobre dlocate
: A opção -k
lista todos os pacotes relacionados ao kernel e ao dkms instalados, um por linha (e -K
faz o mesmo, mas no formato dpkg -L
detalhado). Eu adicionei a opção -k
a dlocate
para ativar exatamente esse tipo de uso, mas até agora nunca me ocorreu que deveria haver um argumento regexp opcional após o -k
, mesmo que isso seja completamente óbvio - eu sempre usei apenas com grep
.
A próxima versão de dlocate
(ou seja, > = 1,08) suportará dlocate -k '-4.4.0-'
sem necessidade de enviar a saída através de grep
.