对文件进行数字排序

对文件进行数字排序

可能的重复:
列出按数字排序的文件

如何根据最后一个字段的编号对其进行排序?我尝试过sort -t ' ' -k9,10n

-rw-r--r-- 1 root   root    440 May 14 08:52 test.txt.6
-rw-r--r-- 1 root   root    470 May 14 08:52 test.txt.8
-rw-r--r-- 1 root   root   2.6K May 14 08:52 test.txt.14
-rw-r--r-- 1 root   root    449 May 14 08:52 test.txt.7
-rw-r--r-- 1 root   root    434 May 14 08:52 test.txt.13
-rw-r--r-- 1 root   root    554 May 14 08:52 test.txt.4
-rw-r--r-- 1 root   root    426 May 14 08:52 test.txt.12
-rw-r--r-- 1 root   root   1.6K May 14 08:52 test.txt.5
-rw-r--r-- 1 root   root   7.2K May 14 08:52 test.txt.11
-rw-r--r-- 1 root   root    444 May 14 08:52 test.txt.3
-rw-r--r-- 1 root   root    927 May 14 08:52 test.txt.9
-rw-r--r-- 1 root   root    681 May 14 08:52 test.txt.15
-rw-r--r-- 1 root   root    427 May 14 08:52 test.txt.2
-rw-r--r-- 1 root   root    458 May 14 08:52 test.txt.16
-rw-r--r-- 1 root   root   2.4K May 14 08:52 test.txt.10
-rw-r--r-- 1 root   root    423 May 14 08:52 test.txt.17
-rw-r--r-- 1 root   root    424 May 14 08:52 test.txt.1

答案1

好吧,问题的一部分是-t ' '不会折叠分隔符,因此您的第九列将是 4 个字符的大小,并且在三个字符上为空。把它去掉,你就会得到你想要的折叠空白。正如其他人所说,问题的另一部分是字段不是数字。幸运的是,它们与版本号非常相似,您可以使用版本排序 ( -V) 对它们进行排序。此外,如果它们是连续的(即 1-17,不遗漏任何),您可以使用大括号,正如我在您定向到的其他线程中提到的那样 ( test.txt.{1..17})。

ls -l | sort -Vk9

echo test.text.{1..17}

答案2

您可以使用以下命令,您将按照您想要的方式对它们进行排序: ls-l-v

答案3

使用 sort 的一个常见错误是在按数值排序时不使用“-n”参数。

相关内容