Nunca analise a saída de ls
Minha sugestão é evitar analisar a saída de ls [ 1 ] , ainda mais se estiver em conjunto com o del
comando. Isso por muitos motivos, principalmente relacionados a caracteres inesperados e não usuais permitidos no nome do arquivo.
Mesmo quando você espera que os nomes de arquivos pertencentes aos pacotes Linux "se comportem bem" , esse problema pode aparecer se outros arquivos estiverem presentes no mesmo diretório, mas você não sabia ou notou.
É melhor usar find
, a expansão da guia (comece a escrever o nome e pressione Tab), a expansão do nome do arquivo [ 2 ] como *MyKey*
...
Uma solução rápida
Como você deseja selecionar todos os pacotes (que terminam com .deb
) com "google" dentro, você pode criar sua solicitação com o curinga *
*google*.deb
e fazer um simples
rm -i *google*.deb
que selecionará cada nome de arquivo com "google" no meio que terminará no .deb
presente no diretório atual. A opção -i
(interativa) solicitará a confirmação, um bom hábito ao excluir arquivos com a expansão de parâmetro.
Uma solução próxima à filosofia de sua tentativa
Se seu objetivo é criar sua linha de comando peça após peça, você fez isso ls
depois ls | grep google
e somente depois de verificar sua saída, é possível executá-la em uma subshell $(...)
com
rm -i $(ls | grep google)
Uma maneira mais rápida e perigosa [ 3 ] , é usar!!
ls | grep google
rm -i $(!!)
que executará o último comando concluído em seu histórico . Você pode proteger-se do fato de que você não tem controle visual da linha que você está indo para executar se você tiver ativado previamente as opções do shell histverify
com shopt -s histverify
.
rm -i *chrome*.deb