我的目录中有一个文件列表,其文件名中包含不同的时间戳。我想根据文件名上的时间戳对文件进行排序。 (我不想根据文件的 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
你想要的是-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