bash: Como determinar o maior número (versão mais recente) de: ls * .tar.gz | corte -c 2-4

1

Oi eu estou tentando obter o maior número (versão mais recente) de um arquivo,

Eu tenho um monte de tar.gz arquivos em um diretório, versões de alguns softwares no formato v${version_number}_software.tar.gz , onde ${version_number} é um número de três dígitos.

A execução de ls *.tar.gz | cut -c 2-4 me fornece essa saída:

100
102
684
696
705

O que eu deveria executar em seguida (ou o que devo alterar na sintaxe ls ou cut) para obter o valor mais alto (neste caso, 705 )?

Eu tentei alguns grep , awk e sed , mas estou um pouco fora do meu alcance ... Qualquer pista seria apreciada!

    
por Nahshon paz 01.12.2015 / 14:18

1 resposta

0

sheesh, eu devo ter notado que o maior valor sempre sai para a última linha: -)

então:

ls -d -- *.tar.gz | cut -c 2-4 | tail -n 1

é. Deixando esta pergunta para a posteridade

EDIT: mas como Lambert sugeriu abaixo,

ls -d -- *.tar.gz | cut -c 2-4 |sort -n|tail -n 1

é melhor garantir que a saída de ls seja classificada numericamente (caso contrário, V999.tar.gz poderia vir antes de v100.tar.gz em locais onde a ordem de classificação diferencia maiúsculas de minúsculas). Pena que ele não postou como resposta.

    
por 01.12.2015 / 14:23

Tags