我有许多名称如下的文件:
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
Run Code Online (Sandbox Code Playgroud)
我希望能够按各种num
s对这些文件名的列表进行排序,并将排序后的列表传递给各种命令行实用程序。例如,如果我按 排序num2
,我想要的顺序是:
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
Run Code Online (Sandbox Code Playgroud)
我有一个python脚本来做到这一点,但现在看来似乎应该是可能的,但没有像过滤器sed
和sort
。
是否有任何简单的方法可以仅使用常见的命令行过滤器按文件名的一部分进行排序?
sort
带有-g(--general-numeric-sort)
选项的GNU应该能够做到这一点
sort -k5,5g -t '_' <<!
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
!
beginning_num1_734_num2_1.363e+12_num3_800.pdf
beginning_num1_1007_num2_9.453e+12_num3_1200.pdf
beginning_num1_735_num2_7.453e+13_num3_800.pdf
Run Code Online (Sandbox Code Playgroud)