2014-04-08 31 views
13

我有一堆PDF,我试图追加在一起,我有一个程序,给定一个文件列表,将它们追加到一个PDF 。Bash排序类似于Windows的自然排序顺序'

我遇到的问题是管道文件名排序不会产生所需的顺序。 排序没有任何标志给我我想要的。我有下面的一些例子:

所需的排序顺序:

test1.pdf 
test2.pdf 
test10.pdf 

取得使用排序顺序排序

test1.pdf 
test10.pdf 
test2.pdf 

有关什么构成排序顺序我渴望更多信息,参见:

http://msdn.microsoft.com/en-us/library/bb759947.aspx

回答

18

假设你使用GNU排序,使用-V选项:

-V, --version-sort 
      natural sort of (version) numbers within text 

您的输入,它会产生:

test1.pdf 
test2.pdf 
test10.pdf 
+4

如果你使用'ls',你可以做'LS - 1v',这给你这个。 –

+0

@LaughDonor谢谢。我不会碰巧使用'ls'。 – devnull

+0

不幸的是,-V不适用于我拥有的文件名。它们的形式如下:sec2_pages12-20,sec2_pages21-30等... ls选项完全可以工作,谢谢! – jknielse