Uma rapidinha com as sobras que escolhi na linha de comando: -)
find . -name time="*" -exec ruby -e "s='{}'; puts s.split('=')[-1].split('.')[0]+s" \; |
sort -n | colrm 1 3
Explicação:
Meu amigo Ruby armazena a string de caminho dada por find como {} e a armazena em uma variável s . Em seguida, ela divide a string ao longo de = caracteres e mantém a última parte (índice -1 na matriz de resultados), por ex. %código%.
Em seguida, ela divide essa string em 002.jpg caracteres e mantém a primeira parte (índice 0 na matriz resultante), presumindo que os arquivos tenham o nome . , cujos resultados são a parte numérica de três dígitos, por exemplo. %código%.
Por fim, ela imprime isso e adiciona a string do caminho original. Isso daria:
002./alpha=0.1_beta=0.2_gamma=1.0/path/time=002.jpg
001./alpha=0.1_beta=0.2_gamma=1.0/path/time=001.jpg
021./alpha=0.1_beta=0.2_gamma=0.1/path/time=021.jpg
001./alpha=0.1_beta=0.2_gamma=0.1/path/time=001.jpg
019./alpha=0.1_beta=0.2_gamma=0.1/path/time=019.jpg
Os comandos de canal adicionais classificam a saída numericamente ( ddd.<ext> ) e, finalmente, removem as três primeiras colunas da saída ( 002 ).
Exemplo:
test$ find . -name time="*" -exec ruby -e "s='{}'; puts s.split('=')[-1].split('.')[0]+s" \;
| sort -n | colrm 1 3
./alpha=0.1_beta=0.2_gamma=0.1/path/time=001.jpg
./alpha=0.1_beta=0.2_gamma=1.0/path/time=001.jpg
./alpha=0.1_beta=0.2_gamma=1.0/path/time=002.jpg
./alpha=0.1_beta=0.2_gamma=0.1/path/time=019.jpg
./alpha=0.1_beta=0.2_gamma=0.1/path/time=021.jpg