Tente executar este comando, acho que você vai gostar
find /path/to/dir -type f -print0 | xargs -0 du -s | sort -rn | awk 'NR>5 {print $NF}' | xargs rm -f
Isso imprimirá todos os arquivos abaixo do diretório /path/to/dir
, calculará o tamanho de cada arquivo, classificará por tamanho, extrairá os nomes de todos os arquivos (exceto os 5 principais) e passará isso para rm
.
Para realizar isso em cada diretório individualmente, é melhor envolvê-lo em um script, como
#!/bin/bash
for DIR in 'find /path -maxdepth 1 -type d'
do
find ${DIR} -type f -print0 | xargs -0 du -s | sort -rn | awk 'NR>5 {print $NF}' | xargs rm -f
done
Onde /path
é o diretório pai que contém todos os seus diretórios irmãos. Isto irá realizar a mesma coisa que @TomNewton descreve executando individualmente o fluxo de trabalho em cada diretório irmão.