中間セクションに基づいてファイルを並べ替える

中間セクションに基づいてファイルを並べ替える

Unixには次のファイルがあり、ファイル名の日付と時刻に基づいてファイルをソートしたいと思います。

ABC_XYZ。20170201223147。 txt
ABC_XYZ。20170201223146。 txt
ABC_XYZ。20170127223141。 txt
ABC_XYZ。20170125223139。 txt
ABC_XYZ。20170214223134。 txt

次のような結果を期待しています

ABC_XYZ。20170125223139。 txt
ABC_XYZ。20170127223141。 txt
ABC_XYZ。20170201223146。 txt
ABC_XYZ。20170201223147。 txt
ABC_XYZ。20170214223134。 txt

私はsort -kandを使ってみましたが、sort -nおそらく正しい方法で使用していないかもしれません。

答え1

現在のフォルダ内のすべてのファイルが説明されている形式と同じ場合は、次のコマンドを使用できます。

ls | sort -t . -k 2 

この-tスイッチは区切り文字を a に設定します。.
この-kスイッチは、ソートに使用するキーを表します。

-n指定したファイル名形式を使用すると、各ファイル名のビット数が同じであるため、スイッチは不要です。常にそうでない場合は、-n簡単にスイッチを追加できます。

ls | sort -n -t . -k 2 

同様に、ファイル名の各部分の数値の長さが異なる場合は、両方のキーを指定し、拡張範囲を指定する必要があります。

ls | sort -n -t . -k 2,2 -k 3,3

関連情報