É impressionante como volta e meia gastamos horas procurando resolver um problema e a solução sempre esteve ali, ao nosso lado, a uma man page de distância.
Há algum tempo eu estava programando um script que precisava listar determinados arquivos de um diretório, em ordem crescente. O problema: como os arquivos eram nomeados de “arq1.txt”, “arq2.txt”, até “arq30.txt”, quando meu script executava o comando ls -l o output não era exatamente ordenado em ordem crescente:
arq10.txt
arq11.txt
arq12.txt
arq13.txt
arq14.txt
arq15.txt
arq16.txt
arq17.txt
arq18.txt
arq19.txt
arq1.txt
arq20.txt
arq21.txt
arq22.txt
arq23.txt
arq24.txt
arq25.txt
arq26.txt
arq27.txt
arq28.txt
arq29.txt
arq2.txt
arq30.txt
arq3.txt
arq4.txt
arq5.txt
arq6.txt
arq7.txt
arq8.txt
arq9.txt
Após horas tentando descobrir como ordenar corretamente os arquivos, utilizando os mais diferentes meios, como por exemplo o ls -l | sort e suas variações, resolvi tentar o óbvio: ler a man page do comando ls. E, para minha surpresa, o comando ls tem uma opção pouco conhecida que faz justamente o tipo de ordenação que estava precisando: a opção “-v”, de “sort by version“. Após um simples ls -lv o resultado foi o correto:
arq1.txt
arq2.txt
arq3.txt
arq4.txt
arq5.txt
arq6.txt
arq7.txt
arq8.txt
arq9.txt
arq10.txt
arq11.txt
arq12.txt
arq13.txt
arq14.txt
arq15.txt
arq16.txt
arq17.txt
arq18.txt
arq19.txt
arq20.txt
arq21.txt
arq22.txt
arq23.txt
arq24.txt
arq25.txt
arq26.txt
arq27.txt
arq28.txt
arq29.txt
arq30.txt
Mais um exemplo de que antes de reinventar a roda, devemos ver se alguém já não passou com ela rodando do nosso lado.