シェルスクリプトを使用して次のファイル名を並べ替えるにはどうすればよいですか? [閉鎖]

シェルスクリプトを使用して次のファイル名を並べ替えるにはどうすればよいですか? [閉鎖]

シェルスクリプトを使用して次のファイル名を並べ替えるにはどうすればよいですか?

abcd_exp_4_20180706.txt
abcd_exp_3_20180706.txt
abcd_exp_1_20180706.txt
abcd_exp_2_20180706.txt
abcd_exp_5_20180706.txt
abcd_exp_1_20180707.txt
abcd_exp_5_20180707.txt
abcd_exp_4_20180707.txt
abcd_exp_3_20180707.txt
abcd_exp_2_20180707.txt

期待される出力

abcd_exp_1_20180706.txt
abcd_exp_2_20180706.txt
abcd_exp_3_20180706.txt
abcd_exp_4_20180706.txt
abcd_exp_5_20180706.txt
abcd_exp_1_20180707.txt
abcd_exp_2_20180707.txt
abcd_exp_3_20180707.txt
abcd_exp_4_20180707.txt
abcd_exp_5_20180707.txt

ベストアンサー1

通常、解析の結果は次lsのとおりです。悪い考え。ただし、すべてのファイル名が同じ形式に従うことがわかっている場合、これは合理的なアプローチです。

$ ls | sort -t_ -k4 -k3,3

説明する

  • ls |:lsの出力をパイプで接続します...
  • sort -t_ -k4 -k3:最初に4番目の列(たとえば)を基準にソートし、次に3番目の列(たとえば)を基準_にソートする区切り文字として使用します。20180706.txt1

おすすめ記事