Eu usaria heurística difusa para determinar se um arquivo é mbox. Por exemplo, aqui está um script AWK:
ls -F | awk '{
if($0 !~ /\//){
getline first < $0;
if(first ~ /^From .*@/){
print $0 " is a mbox file"
}
}
}'
Como getline mata um script AWK, caso haja um problema ao abrir um arquivo, usamos o argumento -F para ls
para adicionar um / no final dos diretórios. A verificação $0 !~ /\//
certifica-se de não abrir nenhum nome com uma barra nela. Em seguida, lemos a primeira linha do arquivo, colocando-a na variável first
.
Agora, estamos prontos para fazer uma verificação heurística difusa para um arquivo mbox. Se a primeira linha de um arquivo começar com "De" e depois tiver um @ em algum lugar na primeira linha, informaremos que o arquivo é um arquivo mbox BSD.
E, sim, maildirs são uma ideia melhor (contanto que você tenha inodes suficientes para armazenar um monte de arquivos pequenos) porque eles são mais confiáveis do que os arquivos mbox do BSD, e porque não precisamos fazer essa solução feia muito difamado em "The UNIX Haters Handbook" da necessidade de adicionar um '>' antes de uma linha que começa "De".