O problema é que /home/*/mail/new/*
se expande para muitos nomes de arquivos. A solução mais simples é excluir o diretório:
rm -rf /home/*/mail/new/
Como alternativa, use seu comando find
. Deve funcionar, será apenas mais lento.
Ou, se você precisar que os diretórios new
usem um loop para localizá-los, exclua-os e recrie-os:
for d in /home/*/mail/new/; do
rm -rf "$d" && mkdir "$d"
done
O loop que você estava tentando escrever (mas não use isso, é muito lento e ineficiente) é algo como:
for f in /home/*/mail/new/* /home/*/mail/new/.*; do
rm -rf "$f"
done
Não é necessário testar arquivos se você quiser excluir tudo, basta usar rm -rf
e os diretórios e arquivos podem ser excluídos pelo mesmo comando. Ele vai reclamar sobre não ser possível deletar .
e ..
, mas você pode ignorar isso. Ou, se você quer ser super clean e evitar os erros, você pode fazer isso no bash:
shopt -s dotglob
for f in /home/*/mail/new/*; do
rm -rf "$f"
done