加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何根据多个嵌入数字对文件路径进行排序?

发布时间:2020-12-16 01:50:16 所属栏目:安全 来源:网络整理
导读:我运行了一个程序,用不同的参数生成结果,R,C和RP,反映在输出文件的目录名中,全部命名为results.txt. 例如,在目录名params_R_7_C_16_RP_0中,7是参数R的值,16是参数C的值,0是参数RP的值. 我想获取当前目录树中的所有results.txt文件,按其托管目录中的R,C和RP的
我运行了一个程序,用不同的参数生成结果,R,C和RP,反映在输出文件的目录名中,全部命名为results.txt.

例如,在目录名params_R_7_C_16_RP_0中,7是参数R的值,16是参数C的值,0是参数RP的值.

我想获取当前目录树中的所有results.txt文件,按其托管目录中的R,C和RP的嵌入值进行排序.

我首先使用以下命令来获取我要解析的results.txt文件:

find ./ -name "results.txt"

输出是:

./params_R_11_C_9_RP_0/results.txt 
./params_R_7_C_9_RP_0/results.txt
./params_R_7_C_4_RP_0/results.txt
./params_R_11_C_16_RP_0/results.txt 
./params_R_9_C_4_RP_0/results.txt
./params_R_5_C_9_RP_0/results.txt 
./params_R_9_C_25_RP_0/results.txt 
./params_R_7_C_16_RP_0/results.txt 
./params_R_5_C_25_RP_0/results.txt 
./params_R_5_C_16_RP_0/results.txt 
./params_R_11_C_4_RP_0/results.txt
./params_R_9_C_16_RP_0/results.txt
./params_R_7_C_25_RP_0/results.txt
./params_R_11_C_25_RP_0/results.txt 
./params_R_5_C_4_RP_0/results.txt 
./params_R_9_C_9_RP_0/results.txt

我尝试了以下排序命令:

find ./ -name "results.txt" | sort

这导致词法排序:

./params_R_11_C_16_RP_0/results.txt
./params_R_11_C_25_RP_0/results.txt
./params_R_11_C_4_RP_0/results.txt
./params_R_11_C_9_RP_0/results.txt
./params_R_5_C_16_RP_0/results.txt
./params_R_5_C_25_RP_0/results.txt
./params_R_5_C_4_RP_0/results.txt
./params_R_5_C_9_RP_0/results.txt
./params_R_7_C_16_RP_0/results.txt
./params_R_7_C_25_RP_0/results.txt
./params_R_7_C_4_RP_0/results.txt
./params_R_7_C_9_RP_0/results.txt
./params_R_9_C_16_RP_0/results.txt
./params_R_9_C_25_RP_0/results.txt
./params_R_9_C_4_RP_0/results.txt
./params_R_9_C_9_RP_0/results.txt

但我真正想要的是选择性数字排序:首先是R值,然后是C,然后是RP:

./params_R_5_C_4_RP_0/results.txt
./params_R_5_C_9_RP_0/results.txt
./params_R_5_C_16_RP_0/results.txt
./params_R_5_C_25_RP_0/results.txt
./params_R_7_C_4_RP_0/results.txt
./params_R_7_C_9_RP_0/results.txt
./params_R_7_C_16_RP_0/results.txt
./params_R_7_C_25_RP_0/results.txt
./params_R_9_C_4_RP_0/results.txt
./params_R_9_C_9_RP_0/results.txt
./params_R_9_C_16_RP_0/results.txt
./params_R_9_C_25_RP_0/results.txt
...

我在生成路径列表时考虑填充嵌入的数字(例如,params_R_005_C_004_RP_0),但这需要额外的处理步骤,我想避免.

可以直接实现所需的分类吗?

解决方法

您需要-V标志进行排序

find ./ -name "results.txt" | sort -V

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读