Unixでは数字で並べ替え

Unixでは数字で並べ替え

ファイルの並べ替えに関する質問があります。私の質問は、ソートに関する他の質問とは異なります。以下に示すように、何百ものファイルがあるフォルダがあります。

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

_これにより、名前の最初の文字の後に番号順に名前がソートされます。繰り返しますが、ファイル名のプレフィックスが一定であると仮定します(このソリューションは完全に機能します)。無視する最初までプレフィックス_)。

おすすめ記事