Voici un sous-set des noms de files dans mon file:
profile_10_1_1 profile_10_1_2 profile_1_1_1
J'essaie de les sortinger numériquement par ordre croissant, à partir de 1. J'ai utilisé la command suivante
sort -n filename
et a également essayé ceci:
sort -nk filename
Mais ceux avec 10 seront toujours au sumt de la list.
Comment écrire une command pour get cette sortie désirée:
profile_1_1_1 profile_1_1_2 .... profile_9_1_1 .... profile_10_1_1
FreeBSD et GNU -V
une option -V
pour cela.
sort -V < filename
GNU ls
a une option -v
. Donc, si ces files existent, vous pourriez faire:
xargs -d '\n' < filename ls -dv --
zsh
a des indicateurs d'expansion de paramètre pour sortinger les arrays numériquement:
printf '%s\n' ${(fno)"$(<filename)"}
Sinon, de manière portable, vous auriez à le faire comme:
sort -t_ -k1,1 -k2,2n -k3,3n -k4,4n -k5,5n filename
-V
fait exactement ce que tu veux.
-V, --version-sort natural sort of (version) numbers within text
Fonctionne au less en GNU.