Delete Todos os arquivos, exceto arquivo específico no bash [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    
  •              Ao executar 'rm -rf', é possível excluir determinados subdiretórios?                                      4 respostas                          
  •     

Estou tentando usar rm -rf !(current) excluir todas as pastas no caminho atual, exceto a pasta current . Mas estou ficando abaixo do erro

bash: !: event not found

Como obtenho essa funcionalidade no bash?

    
por Reddy 22.10.2014 / 08:30

1 resposta

3

Você precisa ativar extglob .

Suponha que tenhamos três diretórios:

$ ls -d */
current/  future/  past/

Sem glob estendido, o seguinte não é entendido:

$ echo !(current)
bash: syntax error near unexpected token '('

Se habilitarmos extglob , entendido:

$ shopt -s extglob
$ echo !(current)
future past

Isso corresponde com sucesso a todos os arquivos exceto current .

Observe que o ponto de exclamação, ! , é um caractere bash-ativo. Pode invocar a expansão de histórico que, se falhar, resulta no erro que você observou. Se você não estiver usando a expansão de histórico, convém desativá-lo: set +H .

    
por 22.10.2014 / 08:37

Tags