【问题标题】:How to list or cat files sorted numerically?如何列出或 cat 数字排序的文件?
【发布时间】:2021-06-01 13:47:05
【问题描述】:

我有以下文件:

1A34_3_2.pdb
1A34_6_3.pdb
1A34_9_4.pdb
1A34_A_5.pdb
1A34_D_6.pdb
...
1A34_A2_23.pdb
...
1A34_BK_45.pdb

我想根据文件名末尾的数字对它们进行数字排序[例如,“6”是文件名 1A34_D_6.pdb 末尾的数字]

如果我使用ls -1v 1A34*,结果是:

1A34_3_2.pdb
1A34_6_3.pdb
1A34_9_4.pdb
1A34_A2_23.pdb
1A34_A_5.pdb
1A34_BK_45.pdb
1A34_D_6.pdb

这不是文件名中最后一个数字的升序。

【问题讨论】:

标签: cat ls


【解决方案1】:

请将ls 命令的输出提供给此过滤器:

ls | perl -e '@filenames=<>; print sort {substr($a, 7) <=> substr($b, 7)} @filenames'

输出:

1A34_3_2.pdb
1A34_6_3.pdb
1A34_9_4.pdb
1A34_A_5.pdb
1A34_D_6.pdb
1A34_9_14.pdb
1A34_D_16.pdb

@filenames=&lt;&gt;;ls 命令的输出放入数组@filenames

sort()'s @filenames 数字上,从要排序的字符串的第 7 个偏移量开始,例如 1A34_3_2.pdbsort {substr($a, 7) &lt;=&gt; substr($b, 7)} @filenames

参考资料: sort() substr()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2016-02-14
    相关资源
    最近更新 更多