2

我有这些文件:

-rw-rw-r-- 1 root     boincadm 21170 Jul 19 16:42 wilson_job_79
-rw-rw-r-- 1 root     boincadm 18170 Jul 19 16:42 wilson_job_8
-rw-rw-r-- 1 root     boincadm 21288 Jul 19 16:42 wilson_job_80
-rw-rw-r-- 1 root     boincadm 21180 Jul 19 16:38 wilson_job_81
-rw-rw-r-- 1 root     boincadm 21156 Jul 19 16:36 wilson_job_82
-rw-rw-r-- 1 root     boincadm 21414 Jul 19 16:26 wilson_job_85
-rw-rw-r-- 1 root     boincadm 21194 Jul 19 16:29 wilson_job_86
-rw-rw-r-- 1 root     boincadm 21148 Jul 19 16:29 wilson_job_87
-rw-rw-r-- 1 root     boincadm 21176 Jul 19 16:27 wilson_job_88
-rw-rw-r-- 1 root     boincadm 21240 Jul 19 16:42 wilson_job_89
-rw-rw-r-- 1 root     boincadm 18136 Jul 19 16:26 wilson_job_9
-rw-rw-r-- 1 root     boincadm 21260 Jul 19 16:38 wilson_job_90
-rw-rw-r-- 1 root     boincadm 21174 Jul 19 16:34 wilson_job_91

当我列出时,我希望按数字顺序回答:

-rw-rw-r-- 1 root     boincadm 18170 Jul 19 16:42 wilson_job_8
-rw-rw-r-- 1 root     boincadm 18136 Jul 19 16:26 wilson_job_9
-rw-rw-r-- 1 root     boincadm 21170 Jul 19 16:42 wilson_job_79
-rw-rw-r-- 1 root     boincadm 21288 Jul 19 16:42 wilson_job_80
-rw-rw-r-- 1 root     boincadm 21180 Jul 19 16:38 wilson_job_81
-rw-rw-r-- 1 root     boincadm 21156 Jul 19 16:36 wilson_job_82
-rw-rw-r-- 1 root     boincadm 21414 Jul 19 16:26 wilson_job_85
-rw-rw-r-- 1 root     boincadm 21194 Jul 19 16:29 wilson_job_86
-rw-rw-r-- 1 root     boincadm 21148 Jul 19 16:29 wilson_job_87
-rw-rw-r-- 1 root     boincadm 21176 Jul 19 16:27 wilson_job_88
-rw-rw-r-- 1 root     boincadm 21240 Jul 19 16:42 wilson_job_89
-rw-rw-r-- 1 root     boincadm 21260 Jul 19 16:38 wilson_job_90
-rw-rw-r-- 1 root     boincadm 21174 Jul 19 16:34 wilson_job_91

我怎样才能做到这一点?

4

5 回答 5

3

如果您有 GNU 工具,请自行ls处理:ls -vl

http://www.gnu.org/software/coreutils/manual/html_node/Details-about-version-sort.html

于 2012-07-26T21:49:30.040 回答
3

利用下划线字符“_”仅出现在以下输出中的文件名中这一事实ls -l

ls -l | sort -t_ -k1,2 -k3n
于 2012-07-26T17:50:56.183 回答
1

尝试这个:

ls | sort -V | xargs -i ls -ld {}

这会运行 ls (它只输出一个文件名列表),通过 sort -V 管道它(它执行“版本号”排序),然后将每一行发送到 ls -ld (它输出每个文件的详细信息)。

于 2012-07-26T17:49:21.077 回答
1

使用 sed,假设文件名中只有数字在排序字段中:

ls | sed 's/[^0-9]*\([0-9]*\)*/\1 &/' | sort -n -k1 | cut -d' ' -f2
  • 此处的sed命令创建一个仅包含文件编号的新列,例如对于 file23,它将打印出“23 file23”。

  • sort命令以数字方式 ( -n) 按第一个字段(或键, -k1)排序

  • cut命令删除第一个字段并仅打印第二个字段 ( -f2)。例如,它将file23从输入打印23 file23

于 2012-07-26T18:00:55.580 回答
0

在第 9 个字段上使用版本排序:

ls -l | sort -k9V
于 2012-07-26T18:11:12.313 回答