
我需要建立一個文件列表,以升序顯示文件名。我的檔案名稱具有檔案模式: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
(「減一」)選項ls
:
ls -1
檔案名稱將按名稱排序。
printf '%s\n' FILE.*
假設該模式FILE.*
匹配所有相關的檔案名,而不是其他,上面的命令還將按字典順序列印檔案名,每個檔案名稱單獨佔一行,這似乎就是您想要的。