ファイルリストを番号でソート

ファイラによくある「番号順ソート」をやってみようと思った。

$ ls
ero1.jpg       ero11.jpg      ero12.jpg      ero2.jpg       hardcore1.jpg  hardcore3.jpg
$ ls|sed -e 's/^\([^0-9]*\).*/\1:&/;h;s/[^0-9]//g;G;s/\n/:/g'|sort -t: -k2,2 -k1,1n|cut -d: -f3-
ero1.jpg
ero2.jpg
ero11.jpg
ero12.jpg
hardcore1.jpg
hardcore3.jpg

ファイル名に改行かコロンが入っているとだめ。


[追記:2007-04-17]
GNU ls なら -v オプションでできることが判明。