如何按bash中文件名一部分的数字排序?

问题描述 投票:0回答:1

我正在尝试将bash中的变量分配给该目录中'.tar.gz'之前的编号最大的变量,并且我在解决此问题的最佳方法上画了一个完整的空白:

ls /dirname | sort   
daily-500-12345.tar.gz  
daily-500-12345678.tar.gz  
daily-500-987654321.tar.gz  
weekly-200-1111111.tar.gz  
monthly-100-8675309.tar.gz
bash sorting grep ls
1个回答
0
投票
sort -Vrt - -k3,3
  • -V自然排序
  • [-r反向,因此您可以使用head -1仅获得第一行
  • [-t -使用连字符作为字段分隔符
  • -k3,3仅使用第三个字段排序

输出:

daily-500-987654321.tar.gz
daily-500-12345678.tar.gz
monthly-100-8675309.tar.gz
weekly-200-1111111.tar.gz
daily-500-12345.tar.gz
© www.soinside.com 2019 - 2024. All rights reserved.