É 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.