shopt -s extglob
rm !(*.py)
Você ativa a variável extglob. Isso fornece alguns recursos extras de correspondência de padrões, particularmente a negação.
Você pode desativá-lo novamente com shopt -u extglob
.
Esta é uma pergunta muito simples e eu não sei se existe uma solução ou não.
Eu tenho alguns arquivos em um diretório, supondo que eu tenha .py e alguns outros arquivos de extensão. Agora eu gostaria de remover todos os arquivos, exceto aqueles que terminam em .py
arquivos. Como eu poderia fazer isso com o comando rm
?
Eu quero algo como
!(rm *.py)
É possível?
shopt -s extglob
rm !(*.py)
Você ativa a variável extglob. Isso fornece alguns recursos extras de correspondência de padrões, particularmente a negação.
Você pode desativá-lo novamente com shopt -u extglob
.
Fácil de lembrar é encontrar:
find -not -name "*.py" -delete
Ele também excluirá arquivos em subdiretórios, em comparação com a solução larsmas, mas você pode evitar isso com o parâmetro -maxdepth.
Nem toda implementação find
pode suportar a opção delete
. O Gnu encontra desde a versão 4.2.3.
Supondo que você esteja usando o Bash:
shopt -s extglob
mv !(*.py) some_dir
ls | grep -v ".py$" | xargs rm