Como seus subdiretórios são nomeados com sensatez, você pode excluir todos, exceto os 10 mais recentes, com:
ls -d */ | head -n-10 | xargs rm -rf
Tomando o comando acima, uma parte de cada vez:
-
ls -d */
imprime os subdiretórios em ordem alfabética. Como seus subdiretórios são nomeados por data com$(date +"%F")
, isso é o mesmo que listar do mais antigo para o mais recente. -
head -n-10
imprime todos, exceto as últimas dez linhas. Assim, isso imprime todos, mas os dez subdiretórios mais recentes. -
O comando
xargs rm -rf
excluirá todos os nomes de arquivos recebidos dehead -n-10
.
Ao testar isso, você pode tentar:
ls -d */ | head -n-10 | xargs echo rm -rf
Isso mostrará a você qual comando rm
seria executado sem realmente executá-lo.
O acima não funcionará com subdiretórios que tenham espaços, tabulações ou novas linhas em seus nomes.