Замена имени файла оболочки для нуля или одного вхождения - PullRequest
0 голосов
/ 13 декабря 2018

Имеет следующий список файлов:

-rw-r----- 1 mysql install 80550 Dec 11 16:40 TEST30042.log
-rw-r----- 1 mysql install 74006 Dec 11 17:39 TEST30032.log
-rw-r----- 1 mysql install 74566 Dec 11 17:39 TEST30012.log
-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 79540 Dec 11 17:39 TEST30022.log
-rw-r----- 1 mysql install 17276 Dec 11 21:07 TEST30021.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 17280 Dec 11 21:07 TEST30031.log
-rw-r----- 1 mysql install 16302 Dec 11 21:07 TEST30011.log
-rw-r----- 1 mysql install 16002 Dec 11 21:07 TEST30041.log
-rw-r----- 1 mysql install 29035 Dec 12 14:00 TEST30010.log
-rw-r----- 1 mysql install 16926 Dec 12 14:00 TEST30020.log
-rw-r----- 1 mysql install 14381 Dec 12 14:00 TEST30040.log
-rw-r----- 1 mysql install 29157 Dec 12 14:00 TEST30030.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log
-rw-r----- 1 mysql install  5977 Dec 12 15:02 TEST3002.log
-rw-r----- 1 mysql install  6670 Dec 12 15:03 TEST3001.log
-rw-r----- 1 mysql install  6670 Dec 12 15:03 TEST3003.log
-rw-r----- 1 mysql install  6526 Dec 12 15:03 TEST3004.log
-rw-r----- 1 mysql install  7167 Dec 12 19:29 TEST3.log

Попытка перечислить только файлы с именем TEST3.log, TEST30.log, TEST31.log, TEST32.log, используя следующую команду.Но не получается желаемый результат.

$ ls -ltr TEST3?.log
-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log

Насколько я понимаю, "?"это обозначение для нуля или единичного вхождения.Не удалось выяснить, почему пропущен файл TEST3.log.

Ожидаемый вывод

-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST3.log

Один из способов сделать это - сделать

ls -ltr TEST3?.log TEST3.log
-rw-r----- 1 mysql install 88435 Dec 11 17:39 TEST32.log
-rw-r----- 1 mysql install 15623 Dec 11 21:07 TEST31.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST30.log
-rw-r----- 1 mysql install 21761 Dec 12 14:00 TEST3.log

Интересно, есть ли лучший простой способ сделать это.

Заранее спасибо.

1 Ответ

0 голосов
/ 13 декабря 2018

Оператор ? представляет ровно один подстановочный знак.Там нет оператора для нуля или одного символа.Вам придется использовать цикл или канал ls через другой инструмент.

Я предполагаю, что вы используете Linux на основе списка каталогов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...