Bash真数字顺序包括负数?

Bash真数字顺序包括负数?,bash,sorting,Bash,Sorting,ls-v./file*按自然顺序对文件名排序: file1.txt file2.txt file11.txt 但如果我们包含负数,它会返回: file1.txt file2.txt file11.txt file-5.txt file-18.txt 如何按自然顺序(包括负数)排序? 灵感来源于以下作品: $ ls file*|sort -k1.5n #start sorting at character 5 file-18.txt file-5.txt file1.txt file2.t

ls-v./file*
按自然顺序对文件名排序:

file1.txt
file2.txt
file11.txt
但如果我们包含负数,它会返回:

file1.txt
file2.txt
file11.txt
file-5.txt
file-18.txt
如何按自然顺序(包括负数)排序?



灵感来源于以下作品:

$ ls file*|sort -k1.5n  #start sorting at character 5
file-18.txt
file-5.txt
file1.txt
file2.txt
file11.txt
要进行测试,请执行以下操作:

echo "a black"  > file-18.txt
echo "e white"  > file-5.txt
echo "i red"    > file1.txt
echo "o green"  > file2.txt
echo "u blue"   > file11.txt
echo "voyelles" > file013.47.txt
ls file*|sort -k1.5n  #start sorting at character 5

我认为问题在于,这些数字不像分隔数字那样被视为负数,所以它们是按前缀排序的。如果你知道你想考虑那些负数并对它们排序,你可能需要自己做排序(用一个数组和一个循环或者用AWK/Perl等)。