【问题标题】:Bash descending filename sorting [duplicate]Bash降序文件名排序[重复]
【发布时间】:2014-06-09 10:19:10
【问题描述】:

我一直在尝试使用类似于ls -1 | sort -n -t "_" -k1 的命令对文件名进行排序,但无法正常工作。请帮忙。

我有:

10_filename
11_filename
12_filename
1_filename
2_filename

我想得到:

1_filename
2_filename
... 
10_filename
11_filename

【问题讨论】:

  • " 就是无法让它工作。"它在做什么而不是工作?
  • sort -n -t_ -k1 对我来说很好用,但在这种情况下,sort -n 应该也能正常工作。

标签: linux bash sorting awk sed


【解决方案1】:

请尝试以下操作将解决问题

ls -1v 

-v 根据文件版本版本排序

【讨论】:

  • 在 linux 上,但很多其他 shell/OS 不接受 v
【解决方案2】:

试试这个,

ls -1 *\_filename |排序-n

ls -1 |排序-n

【讨论】:

    【解决方案3】:
    ls -1 | sort -t '_' +1 +0n
    

    下面,有点重,但如果排序不接受字段顺序并使用简单的字符串排序,则可以工作。

    ls -1 | sed 's/^\([0-9]*\)_\(.*\)/000\1_\1_\2/;s/^0*\([0-9]\{3\}\)/\1/;s/\([0-9]\{1,\}_[0-9]\{1,\}_\)\(.*\)/\2_\1/' | sort -n | sed 's/\(.*\)_[0-9]\{1,\}_\([0-9]\{1,\}\)_$/\2_\1/'
    

    【讨论】:

      猜你喜欢
      • 2020-10-12
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 2018-08-14
      相关资源
      最近更新 更多