2015-05-07 23 views
1

ls -v ./file*各種各樣的文件名中的自然順序:Bash真正的數字順序包括負數?

file1.txt 
file2.txt 
file11.txt 

但如果我們有負數,它給予回覆:

file1.txt 
file2.txt 
file11.txt 
file-5.txt 
file-18.txt 

如何在自然順序包括負數排序?


通過Bash true numerical order

+0

我認爲這個問題是那些不被視爲負數與分隔數字一樣多,因此它們按前綴排序。如果你知道你想考慮這些負數並對它們進行排序,你可能需要自己排序(使用數組和循環或者使用awk/perl /等)。 –

+1

'-v'選項是用於對*版本號進行排序的,這些數字往往不是負數。 – chepner

回答

1

靈感似乎以下工作:

$ 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