
Мне нужно создать список файлов, который отображает имя файла в порядке возрастания. Мое имя файла имеет шаблон файла: 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.*
соответствует всем соответствующим именам файлов и ничему другому, приведенная выше команда также выведет имена файлов в лексикографическом порядке, каждое на отдельной строке, что, по-видимому, является тем, что вам нужно.