Primeiro, observe que podemos usar find
para gerar uma lista de todos os arquivos maiores que 2 MB em um determinado diretório:
find . -type f -size +2M
Queremos extrair os 5 maiores arquivos dessa lista. Para fazer isso, podemos usar a opção -printf
para imprimir tanto o caminho do arquivo quanto o tamanho do arquivo (em bytes), da seguinte forma:
find . -maxdepth 1 -type f -size +2M -printf '%s:%P\n'
Agora podemos classificar esses resultados por tamanho de arquivo (em ordem decrescente) e os cinco principais resultados dessa lista de pedidos:
find . -maxdepth 1 -type f -size +2M -printf '%s:%P\n' | sort -rnk1
Em seguida, removemos o tamanho do arquivo para recuperar os caminhos relativos para os 5 maiores arquivos acima de 2M no diretório atual:
find . -maxdepth 1 -type f -size +2M -printf '%s:%P\n' | sort -rnk1 | head -n 5 | cut -d: -f2-
Por fim, podemos passar essa lista de caminhos de arquivo para o comando tar
para criar um arquivo zipado desses arquivos:
tar czf largestfile.tar -T <(find . -maxdepth 1 -type f -size +2M -printf '%s:%P\n' | sort -rnk1 | head -n 5 | cut -d: -f2-)