2016-01-11 30 views
0

我想用sort排序文件名列表。 例如:排序點字符第一個

file.ext 
file1.ext 
z_file2.ext 

使用排序,我得到

file1.ext 
file.ext 
z_file2.ext 

我怎麼能做到讓文件。排序方式:fileXXXX。

+2

嘗試運行命令'LC_ALL = C'。 – choroba

+0

謝謝,但它沒有幫助 –

+0

什麼shell,操作系統,'排序'版本?文件名中是否有隱藏的字符? – choroba

回答

3

正如評論所說,你的問題是,您的區域會產生一個奇怪的排序順序。區域設置到C的排序應該解決的問題:

LC_ALL=C sort 

對於更精確的修復,假設你想使用的語言環境感知整理訂單,但仍然分開在擴展排序鍵,指定.作爲字段分隔符,並使用兩種類型的鍵:

sort -t. -k1,1 -k2 
0

您可以使用-d選項

從手冊頁:

-d, --dictionary-order consider only blanks and alphanumeric characters

$ cat toto 
file.ext 
file1.ext 
z_file2.ext 

$ sort -d toto 
file1.ext 
file.ext 
z_file2.ext 
+0

它不起作用,因爲你寫file1.ext在file.ext之前 –

+0

它以任何方式排序... – 123

+0

我更新了我的答案。這是你的預期訂單嗎? – Quentin

0

你必須獨立於數字的文件名,它們相應的分類和合並回

$ sed -r 's/([0-9]*)\./ &/' file | sort -k1,1 -k2n | sed 's/ //' 
file.ext 
file1.ext 
z_file2.ext 
z_file11.ext 
相關問題