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