Como deletar todos os arquivos e diretório, exceto um diretório nomeado de uma pasta específica em centos [duplicado]

1

Eu quero excluir todos os arquivos e diretórios de um diretório específico, exceto por um diretório. Para a mesma operação eu executei este comando

# rm -R -df !(dir_name_not_to_delete)

Funciona no Ubuntu, mas dá um erro no CentOS; ou seja,

-bash: !: event not found  " what is the reason for this error"

O que devo usar no CentOS para que isso funcione?   Existe alguma alternativa de '!' este sinal em Centos?

    
por Farman Ali 25.06.2015 / 08:55

2 respostas

1

Primeiro, !(dir_name_not_to_delete) é um glob estendido. Para que funcione, você precisa ativar a opção de globs estendidos. Executar:

shopt -s extglob

Em segundo lugar, a mensagem de erro específica que você vê, -bash: !: event not found , significa que você também tem a expansão do histórico ativada. Se você não deseja a expansão do histórico, é mais seguro desativá-lo:

set +H
    
por 25.06.2015 / 09:44
0

Ok, que tal listar tudo nessa pasta e depois excluir essa pasta e excluir todo o resto

find MYDIR -not -name EXCEPT_DIR -exec rm -rf {}\;

Mas antes de fazer isso, basta testar o que o comando find encontrará, ex:

find MYDIR -not -name EXCEPT_DIR
    
por 25.06.2015 / 10:55

Tags