我需要创建一个文件列表,以升序显示文件名。我的文件名具有文件模式: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.*
匹配所有相关的文件名,而不是其他,上面的命令还将按字典顺序打印文件名,每个文件名单独占一行,这似乎就是您想要的。