Terminal Equivalent of Finder Sort Order

One of the features I like about the Finder is that it sorts numbers "correctly", i.e - a file named "Episode 10" will come after "Episode 9" in a list, rather than after "Episode 1".

However, I haven't been able to find a way to replicate this ordering on the command line with any of the basic tools such as ls, sort and so-on, though I may have just missed or misunderstood an option.

Is it possible to mimic the Finder's alphabetic sort order to sort numbers by value when encountered? If so, is there a means of doing this that is cross-platform (even partially)?


Solution 1:

GNU ls has the rather useful -v option that will do exactly what you want. Unfortunately there's no similar option for OS X's BSD-based ls.

A quick solution is to do the following:

$ ls | sort -n -k1.5

That sorts the output starting at the 5th character of the first field.

The same question was asked at StackOverflow and there are a number of other possible solutions listed there (some are Linux-specific though).