Como excluir todas as 3 subpastas mais recentes em uma pasta?
Você pode usar find , sort , awk , xargs e finalmente rm :
find * -maxdepth 0 -type d -not -path "current" -not -path "shared" -printf "%T@ %p\n" | sort -nr | awk 'NR > 3 {print $2}' | xargs rm -rf
Repartição:
find ferramenta versátil para procurar por arquivos e diretórios e, possivelmente, executar comandos neles
* leva em consideração elementos na pasta atual
-maxdepth 0 não procura em subpastas
-type d procura diretórios
-not -path "current" exclui o diretório chamado "atual"
-not -path "shared" exclui o diretório chamado "shared"
-printf "%T@ %p\n" imprime os resultados, anexando o registro de data e hora na frente dos nomes dos diretórios. Isso pode ser omitido no seu caso, uma vez que os diretórios já estão com registro de data e hora.
| sort -nr classifica a lista de acordo com o timestamp, na ordem inversa
| awk 'NR > 3 {print $2}' imprime todos, exceto os três primeiros resultados, omitindo o registro de data e hora que foi adicionado anteriormente. É aqui que você escolhe quantos para manter, basta substituir o número 3
| xargs rm -rf exclua esses diretórios e todo o conteúdo deles
Editar: no seu caso, como os nomes dos diretórios já começam com um registro de data e hora, não há necessidade de adicionar o registro de data e hora novamente para que sort -nr seja efetivo. Observe que a sintaxe awk precisa ser editada de acordo.
find * -maxdepth 0 -type d -not -path "current" -not -path "shared" | sort -nr | awk 'NR > 3 {print $0}' | xargs rm -rf