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 .