ファイル名に基づいて昇順でファイルリストを作成します

ファイル名に基づいて昇順でファイルリストを作成します

ファイル名を昇順で表示するファイルリストを作成する必要があります。ファイル名のファイルパターンは FILE.YYYYMMDD.XXX です。

例えば:

$ ls -ltr
-rwxr-xr-x. 1 honle 1036 Apr 14  2020 FILE.20200102.001
-rwxr-xr-x. 1 honle 426832 Apr 14  2020 FILE.20200102.002
-rwxr-xr-x. 1 honle 426832 Apr 14  2020 FILE.20200102.003
-rwxr-xr-x. 1 honle 426832 Apr 10  2020 FILE.20200110.001
-rw-r--r--. 1 honle 426832 Apr 14 22:50 FILE.20200220.001
-rwxr-xr-x. 1 honle 1036 Apr 15 16:30 FILE.20200110.001

入力について、FILE.20200120.002 が FILE.20200220.001 より前に処理される理由を書き留めます。FILE.20200120.002 は FILE.20200220.001 より前に処理され、現在のディレクトリに到達します。そのため、YYYYMMDD.XXX ファイル名パターンに基づいて並べ替える必要があります。

望ましい出力:

FILE.20200102.001
FILE.20200102.002
FILE.20200102.003
FILE.20200110.001
FILE.20200120.002
FILE.20200220.001

ファイルが作成された時刻が順序どおりでないため、ls -ltr を使用できません。 どのように並べ替えればよいかご存知ですか? Linux を使用しています。

ありがとう

答え1

問題が、ls生成される複数列形式ではなく、単一列でファイル名を取得することである場合は、-1 ("マイナス 1") オプションを使用して次の操作を実行できますls

ls -1

ファイル名は名前順に並べられます。


printf '%s\n' FILE.*

パターンがFILE.*関連するすべてのファイル名に一致し、他には一致しないと仮定すると、上記のコマンドはファイル名を辞書順に、それぞれ 1 行ずつ印刷します。これが必要なようです。

関連情報