名前の一部の部分文字列に基づいてファイル名のリストをソートする方法は?

名前の一部の部分文字列に基づいてファイル名のリストをソートする方法は?

次のような名前のファイルがたくさんあります。

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と同じフィルタ以外は何もできませんsort

一般的なコマンドラインフィルタを使用してファイル名の一部に基づいて簡単に並べ替える方法はありますか?

ベストアンサー1

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

おすすめ記事