Here's a subset of the file names in my file:profile_10_1_1profile_10_1_2profile_1_1_1I'm trying to sort them numerically in ascending order, that is starting from 1 onwards. I used the following command sort -n filenameand also tried this:sort -nk filenameBut the ones with 10 will always be at the top of the list.How do I write a command to get this desired output:profile_1_1_1profile_1_1_2....profile_9_1_1....profile_10_1_1
How to sort lines that contain _ numerically?
sort
FreeBSD and GNU sort have a -V option for that.sort -V < filenameGNU ls has a -v option. So if those files do exist, you could do:xargs -d '\n' < filename ls -dv --zsh has parameter expansion flags to sort arrays numerically:printf '%s\n' ${(fno)$(<filename)}Otherwise, portably, you'd have to do it like:sort -t_ -k1,1 -k2,2n -k3,3n -k4,4n -k5,5n filename