Filenames

如何按名稱的某些子字元串對文件名列表進行排序?

  • August 19, 2013

我有許多名稱如下的文件:

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

我希望能夠按各種nums 對這些文件名的列表進行排序,並將排序後的列表傳遞給各種命令行實用程序。例如,如果我按 排序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

我有一個 python 腳本來執行此操作,但似乎除了過濾器之外什麼可以使用sedand sort

是否有任何簡單的方法可以僅使用常見的命令行過濾器按文件名的一部分進行排序?

sort帶有該選項的GNU-g(--general-numeric-sort)應該能夠做到這一點

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

引用自:https://unix.stackexchange.com/questions/87063