次のような名前のファイルがたくさんあります。
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