如何根据文件名中的时间戳进行排序

如何根据文件名中的时间戳进行排序

我的目录中有一个文件列表,其文件名中包含不同的时间戳。我想根据文件名上的时间戳对文件进行排序。 (我不想根据文件的 time/-t 属性进行排序。而是想根据文件名上的时间戳进行排序)

目录中的示例文件:

ABC.20200131224353
ABC.20080131214253
ABC.20200131234153

我使用常规ls,因为默认情况下它按文件名排序。但它并非在所有情况下都能正常工作。例如,如果文件的年份是“2008”,则不会将该文件视为最早的文件。

答案1

稍微扩展一下这个例子:

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

您可以使用findsort

$ 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

你想要的是-X与 GNU 的切换ls。例如,在我的文档目录之一中,/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

相关内容