ファイルの並べ替えに関する質問があります。私の質問は、ソートに関する他の質問とは異なります。以下に示すように、何百ものファイルがあるフォルダがあります。
anacovaux_1052_summary_betai.out
anacovaux_1052_summary_Pdelta.out
anacovaux_1052_summary_pij.out
anacovaux_1053_DIC.out
anacovaux_1053_summary_betai.out
anacovaux_1053_summary_beta_params.out
anacovaux_1048_DIC.out
anacovaux_1048_summary_betai.out
anacovaux_1043_summary_pi_xtx.out
anacovaux_1058_DIC.out
数字で並べ替える方法があるかどうか疑問に思います。私の言葉は、次のようなものを得るということです。
anacovaux_1043_summary_pi_xtx.out
anacovaux_1048_DIC.out
anacovaux_1048_summary_betai.out
anacovaux_1052_summary_betai.out
anacovaux_1052_summary_Pdelta.out
anacovaux_1052_summary_pij.out
anacovaux_1053_DIC.out
anacovaux_1053_summary_betai.out
anacovaux_1053_summary_beta_params.out
anacovaux_1058_DIC.out
ベストアンサー1
GNU coreutilsを使用するls
(ほとんどのLinuxシステムではデフォルト):
$ ls -v -1
-1
ファイル名の数字の自然なソート順(「バージョンソート」、)を使用して、ソートされた列()にファイル名がリストされます-v
。これは、すべてのファイル名が実際の数字(anacovaux_
たとえば)まで同じプレフィックス文字列を持つと仮定します。
GNUを持たないシステムの場合ls
:
$ print '%s\n' * | sort -t '_' -k2,2n
_
これにより、名前の最初の文字の後に番号順に名前がソートされます。繰り返しますが、ファイル名のプレフィックスが一定であると仮定します(このソリューションは完全に機能します)。無視する最初までプレフィックス_
)。