2010-11-20 29 views
16

如何按順序排列目錄中的文件。Bash true數字順序

file1.txt 
file2.txt 
file11.txt 
... 

我想這就是所謂的:自然順序

+0

創建文件時,是否可以使用零填充數字? – thejh 2010-11-20 18:45:50

+0

這裏的bash連接是什麼? – 2010-11-20 19:09:20

+0

「bash」傾向於暗示問題是在某種Unix操作系統上而不是Windows上解決的。 – icanhasserver 2010-11-20 19:11:12

回答

19

使用-v選項:

ls -v file* 
file1 
file2 
file11 
file12 

另一種選擇,可以使用sort -V,假設一個可以在自己的平臺上:

ls file* |sort -V 
+2

只限於GNU'ls';在MacOS X上,'ls -v'選項是'強制未經編輯的非圖形字符打印'。 – 2010-11-20 18:48:54

+0

'$ ls -v'返回'test5.txt text1.txt text2.txt text11.txt'。 – thejh 2010-11-20 18:50:31

+0

如何使用排序(請參閱上面的編輯)?那個還帶有一個自然排序選項。 – icanhasserver 2010-11-20 18:53:04

0

如果所有文件名都是fileSOMENUMBER.txt,試試這個:

ls -1|sed 's:^[^0-9]*\([0-9]*\).*$:\1:g'|sort -n|sed 's:^\(.*\)$:file\1.txt:g' 
5

對於這個特定的文件列表,從第一個字段的第五個字符開始在數字上進行排序。

$ ls file*|sort -k1.5n 
file1 
file2 
file11 
file12