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