Como posso excluir todos os arquivos, exceto um, de um diretório?

Como posso excluir todos os arquivos, exceto um, de um diretório?

Preciso deletar todos os arquivos, exceto um (seu nome está definido), de um determinado diretório.

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

Responder1

shopt -s extglob && rm !(non_delete_file)

ou

rm -f !(non_delete_file)

ou

find . ! -name non_delete_file -delete

Observe que o comando acima findfuncionará de forma recursiva – 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 às coisas no diretório atual, ignorando os subdiretórios)

find . -type f -maxdepth 1 ! -name non_delete_file -delete

Responder2

  1. mova 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 'alta tecnologia', mas é muito mais difícil excluir acidentalmente o arquivo que você deseja preservar se usar essa abordagem.

Obviamente, essa abordagem falhará se o arquivo precisar existir continuamente no diretório enquanto toda a carnificina estiver acontecendo.

Responder3

Tentar

rm `ls | grep -v '^defined$'`

informação relacionada