Filenames
如何按名稱的某些子字元串對文件名列表進行排序?
我有許多名稱如下的文件:
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
我希望能夠按各種
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
我有一個 python 腳本來執行此操作,但似乎除了過濾器之外什麼都可以使用
sed
andsort
。是否有任何簡單的方法可以僅使用常見的命令行過濾器按文件名的一部分進行排序?
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