How to sort these files?

Hi,

An ls outputs this

-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:24 file.d1
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:24 file.d10
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:24 file.d11
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:25 file.d2
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:25 file.d3
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:25 file.d4
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:41 file_2.d1
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:41 file_2.d10
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_2.d11
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_2.d2
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_2.d4
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_3.d1

Tried several combos with the sort command but can't get the output to be like this

-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:24 file.d1
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:25 file.d2
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:25 file.d3
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:25 file.d4
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:24 file.d10
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:24 file.d11
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:41 file_2.d1
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_2.d2
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_2.d4
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:41 file_2.d10
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_2.d11
-rw-rw-rw-   1 jeisma     users            0 Aug  8 09:42 file_3.d1

Any ideas how?

TIA!

It becomes simpler when you only have the file names, i.e. with a simple ls command.
Then you can use the dot as the field delimiter, sort for field #1 primary and field #2 secondary. And in field #2 start with an offset (2nd character) and sort numerically.

ls | sort -t . -k1,1 -k2.2,2n

Then you can expand with "ls -l". E.g. pipe it to xargs ls -l

2 Likes

or if you insist on working with ls -lt , the old awk/cut trick:

ls -lt | awk '{print $NF, $0}' | sort -t '.' -k1,1 -k2.2,2n | cut -d ' ' -f2-
1 Like

thank you very much!!!