我无法让POSIX“排序”以我想要的方式行事。排序数字文件名时,以字母开头的名称显示在0和1之间。
为什么会这样?
我可以使用不同的排序选项来达到预期效果吗?
$touch 0 1 a
$ls | sort -n
期望的输出: 0 1 一个
实际输出: 0 一个 1
在gnu实现中,“ - g”大致完成了我想要的,但那不是POSIX。不幸的是,这意味着我无法使用它。
答案 0 :(得分:0)
因为你有-n
。这意味着数字,因此a
被视为0
。摆脱-n
,你应该是正确的(11
之前的2
代价
答案 1 :(得分:0)
如果要将输出显式排序为
你可以用
来做cat <(ls -1 | grep '^[0-9]' |sort -n) <(ls -1 | grep -v '^[0-9]' | sort)
如此catenate输出两个命令
但是,这仅适用于bash
,并且不知道POSIX有多少bash,如果bash
不正常,则可以使用临时文件......