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 find
funcionará 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
- mova o arquivo que você deseja preservar para algum lugar fora do diretório
- remova tudo no diretório usando seu método favorito
- 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$'`