Como apagar todos os arquivos, exceto um de um diretório? [duplicado]

2

Eu preciso excluir todos os arquivos, exceto um (seu nome é definido), de um determinado diretório.

Como posso fazer isso a partir do terminal no OS X? Posso fazer isso com um único comando?

    
por slhck 30.05.2012 / 09:53

3 respostas

9
shopt -s extglob && rm !(non_delete_file)

ou

rm -f !(non_delete_file)

ou

find . ! -name non_delete_file -delete

Observe que o comando find acima funcionará recursivamente - ele excluirá todos os arquivos e diretórios no diretório atual e em todos os subdiretórios. Se isso for um problema, use -type f (para corresponder apenas aos arquivos) e -maxdepth 1 (para corresponder apenas ao diretório atual, ignorando os subdiretórios)

find . -type f -maxdepth 1 ! -name non_delete_file -delete
    
por 30.05.2012 / 09:57
1
  1. move o arquivo que você deseja preservar para algum lugar fora do diretório
  2. remova tudo no diretório usando seu método favorito
  3. mova o arquivo que você deseja preservar de volta para o diretório

Não exatamente 'hi-tech', mas é muito mais difícil excluir acidentalmente o arquivo que você deseja preservar se você usar essa abordagem.

Obviamente, esta abordagem falha se o arquivo precisar existir continuamente no diretório enquanto toda a carnificina está acontecendo.

    
por 31.03.2015 / 06:12
0

Tente

rm 'ls | grep -v '^defined$''
    
por 30.05.2012 / 09:57

Tags