Como excluir todos os arquivos e diretórios em um diretório, incluindo os ocultos, exceto .htaccess?

Como excluir todos os arquivos e diretórios em um diretório, incluindo os ocultos, exceto .htaccess?

Como a pergunta sugere, tenho uma situação em que tenho uma pasta onde os usuários podem fazer upload de coisas estranhas. Configure um cron job para limpar esta pasta a cada poucas horas.

Tem um .htaccess por questões de segurança, claro, minha dúvida é, como posso deletar tudo (arquivos e diretórios) desse diretório, inclusive os ocultos cujo nome começa com ponto, mas não o.htaccess?

Atualmente tenho rm -rf *que fazer o trabalho, mas se o usuário fizer upload de um arquivo com um nome começando com um ponto, ele não será excluído.

Qualquer ajuda seria muito apreciada. Obrigado!

Responder1

Na festa:

shopt -s dotglob extglob
rm !(.htaccess)

Responder2

Eu usaria find, como:find /path/to/dir/ -mindepth 1 -not -name .htaccess -delete

informação relacionada