Bash 排序类似于 Windows 的“自然排序顺序”
Posted
技术标签:
【中文标题】Bash 排序类似于 Windows 的“自然排序顺序”【英文标题】:Bash Sort like Windows 'natural sort order' 【发布时间】:2014-05-21 19:10:22 【问题描述】:我有一堆要附加在一起的 PDF,我有一个程序,给定文件列表,将它们附加到一个 PDF 中。
我遇到的问题是将文件名通过管道传送到 sort 不会产生所需的顺序。 sort 的标志也没有给我我想要的东西。我在下面有一些例子:
所需的排序顺序:
test1.pdf
test2.pdf
test10.pdf
使用sort实现排序顺序:
test1.pdf
test10.pdf
test2.pdf
有关我想要的排序顺序的详细信息,请参阅:
http://msdn.microsoft.com/en-us/library/bb759947.aspx
【问题讨论】:
【参考方案1】:假设您使用的是 GNU 排序,请使用-V
选项:
-V, --version-sort
natural sort of (version) numbers within text
对于您的输入,它会产生:
test1.pdf
test2.pdf
test10.pdf
【讨论】:
如果你使用ls
,你可以使用ls -1v
,它给了你这个。
@LaughDonor 谢谢。我碰巧很少使用ls
。
不幸的是,-V 不适用于我拥有的文件名。它们的形式为:sec2_pages12-20、sec2_pages21-30 等......不过 ls 选项完全有效,谢谢!
很遗憾 BusyBox sort
(嵌入式 Linux 上的典型)不支持 -V
选项。
对于后代,自然排序不包括在 ls
中,它也是 FreeBSD 或 OSX 的一部分。 (我知道,这个问题是关于 cygwin..)以上是关于Bash 排序类似于 Windows 的“自然排序顺序”的主要内容,如果未能解决你的问题,请参考以下文章