1

我无法让 POSIX “排序”按照我想要的方式行事。排序数字文件名时,以字母开头的文件名显示在 0 和 1 之间。

为什么会这样?

我可以使用不同的排序选项来达到预期的结果吗?

$touch 0 1 a
$ls | sort -n

所需输出:0 1 a

实际输出:0 a 1

在 gnu 实现中,“-g”大致完成了我想要的,但这不是 POSIX。不幸的是,这意味着我不能使用它。

4

2 回答 2

0

如果您想明确地将输出排序为

  • 第一个数字排序的文件,所以 0、1、2、11、222 和之后
  • 所有其他文件排序

例如,您可以使用

cat <(ls -1 | grep '^[0-9]' |sort -n) <(ls -1 | grep -v '^[0-9]' | sort)

所以连接两个命令的输出

  • 对以数字开头的文件进行排序,以及
  • 对其他文件进行排序(不以数字开头的文件)

但是,这仅适用于bash并且不知道 POSIX 是多少 bash,如果bash不行,您可以使用临时文件...

于 2013-05-02T18:21:51.070 回答
0

这是因为你有-n. 这意味着 numeric soa被视为0. 摆脱,你应该是对的(以现在来之前-n为代价)112

于 2013-05-02T17:35:20.183 回答