ファイル名を昇順に表示するファイルのリストを作成する必要があります。私のファイル名にはファイルパターンがあります: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
(「minus one」)オプションを使用できますls
。
ls -1
ファイル名は名前でソートされます。
printf '%s\n' FILE.*
パターンがFILE.*
すべての関連ファイル名と一致し、それ以外は何も一致しないと仮定すると、上記のコマンドはファイル名を辞書順にそれぞれ1行に印刷します。これは好きなように見えます。