ファイル名のタイムスタンプに基づいてソートする方法

ファイル名のタイムスタンプに基づいてソートする方法

ファイル名に異なるタイムスタンプがあるディレクトリにファイルのリストがあります。ファイル名のタイムスタンプに基づいてファイルをソートしたいです。 (ファイルのtime / -t属性に基づいてソートしたくありません。代わりに、ファイル名のタイムスタンプに基づいてソートしたいです。)

ディレクトリのサンプルファイル:

ABC.20200131224353
ABC.20080131214253
ABC.20200131234153

私はls基本的にファイル名でソートするので、通常を使用します。しかし、すべての状況で正常に動作するわけではありません。たとえば、ファイルの年が「2008」の場合、そのファイルは最も古いファイルとは見なされません。

答え1

この例を少し拡張すると、次のようになります。

ABC.20020131224353
ABC.20080131214253
ABC.20200131234153
ABC.20220131224353
ABC.20040131214253
ABC.20200131234153

find以下を使用できますsort

$ find . -type f -regextype posix-extended -regex '^.*\.[0-9]{14}$' | sort -t. -k3,3
./ABC.20020131224353
./ABC.20040131214253
./ABC.20080131214253
./ABC.20200131224353
./ABC.20200131234153
./ABC.20220131224353

答え2

あなたが望むのは-XGNUへの移行ですls。たとえば、私のドキュメントディレクトリの1つに/bin/ls -lX次のものが返されます。

-rw-r--r--  1 me me 26595 Oct 28 10:39 "Mom's Books.ods"
-rw-r--r--  1 me me 80977 Jan 29 16:47 'My Investments.ods'
-rw-r--r--  1 me me 21338 Dec 20 12:31 'Good-Bad Foods.odt'
-rw-rw-r--  1 me me 51614 Jan 27 19:12 'Neuropathy Exercises.odt'
-r--------  1 me me   151 Jan 11 21:35  brave-browser-sync.txt
-r--------  1 me me   474 May 19  2020  brave_wallet_recovery.txt
-r--------  1 me me   882 Jan 30 13:39  seckeys.txt
-r--------  1 me me   120 Aug 20 11:48  toms-hardware-recovery.txt

関連情報