2013-02-19 57 views
1

我有文件的列表(從ls管道)自然(非字母數字)排序文件列表。理想情況下,我希望它看起來像這樣:shell腳本添加了困難

THISPARTISALWAYSTHESAME200_1.JPG 
THISPARTISALWAYSTHESAME200_2.JPG 
THISPARTISALWAYSTHESAME200_3.JPG 
[...] 
THISPARTISALWAYSTHESAME200_9.JPG 
THISPARTISALWAYSTHESAME200_9_1.JPG 
THISPARTISALWAYSTHESAME200_9_2.JPG 
[...] 
THISPARTISALWAYSTHESAME200_9_10.JPG 
THISPARTISALWAYSTHESAME200_9_11.JPG 
[...] 
THISPARTISALWAYSTHESAME200_9_47.JPG 
THISPARTISALWAYSTHESAME200_9_48.JPG 
THISPARTISALWAYSTHESAME200_9_49.JPG 
THISPARTISALWAYSTHESAME200Map_001.JPG 
THISPARTISALWAYSTHESAME200Map_002.JPG 

我管這個名單到ImageMagick的convert功能,使之成爲一個PDF,所以這將是很好,有正確的順序文件,如上。但是,ls不會自然排序,導致1-10-11-12-2-20混亂; ls -v很自然地將它們排序,但將地圖放在開始處,並且我發現的各種awksort函數都無法處理Map位,從而產生更有趣的混亂。

我認爲可能不會如此難以取出ls -v的輸出並使用awk將包含字符串'map'的每一行都移動到末尾,但我不知道如何去做。

回答

2
ls -v | awk '{ if($0!~/Map/) print $0; else later[NR]=$0; } END { for (i=1; i<=NR; i++) if (i in later) print later[i]; }' 
+0

美麗,除了地圖是不是數字順序排序。這可能會有幫助,他們總是有3位數填充? (這些目錄很糟糕,但一致)。 – lowercasename 2013-02-19 05:21:47

+0

改了一點 – 2013-02-19 05:32:48

+0

謝謝!這很奇妙,現在我要坐下來參考awk並嘗試理解_how_。 :P – lowercasename 2013-02-19 05:35:43