Você pode usar rename
com uma expressão Perl real
$ rename 's/(\d+\.jpg)/use File::stat; sprintf("%s-%s", stat($&)->mtime, )/e' * -v
0000.jpg renamed as 1408057200-0000.jpg
0001.jpg renamed as 1408060861-0001.jpg
0002.jpg renamed as 1408064522-0002.jpg
Isso deixa os arquivos com um tempo desde a época. Encontrar por classificação, pobre para leitura.
O único problema aqui é que você precisa combinar com o nome do arquivo inteiro (para que você possa declarar $&
- todo o jogo - dentro da substituição). Isso pode ficar um pouco cansativo com nomes realmente complicados.
Podemos construir sobre isso para ter uma formatação de data mais convencional:
$ rename 's/(\d+\.jpg)/use File::stat; use POSIX; sprintf("%s-%s", strftime("%Y%m%d-%H%M%S", localtime(stat($&)->mtime)), )/e' * -vn
0000.jpg renamed as 20140815-000000-0000.jpg
0001.jpg renamed as 20140815-010101-0001.jpg
0002.jpg renamed as 20140815-020202-0002.jpg