Я думаю, ви хочете використовувати функцію оболонки, а не ls
. Я використовую bash, тому я перевірив, що ти хочеш man bash
. Шукайте "^ EXPANSION", (натискаючи "/"). Витяг:
РОЗШИРЕННЯ
Розширення виконується в командному рядку після його поділу на слова. Є сім видів розширення виконується: в фігурних дужках , тильди , параметрів і змінних розширення , підстановки команд , арифметичне розширення , слово розщеплення і розширення імен файлів .
︙
... <snip> ...
︙
Розширення шляху
Після слів розщеплення, якщо -f параметр не встановлено, Баш сканує кожне слово для символів *
, ?
і [
. Якщо з’являється один з цих символів, то слово вважається візерунком і замінюється алфавітно відсортованим списком імен файлів, що відповідають шаблону. …
Нещодавно я почав виключати файли на основі їх першої літери з такою командою:
$ ls ./[^t]*
Це відповідатиме тому, що не починається з букви t
. Якщо ви додасте більше символів між дужками, ви виключаєте файли, починаючи з цих літер.
Шукаю посилання, і я хороший! Дивіться відповідність шаблонів . Звідси це буде працювати для вашого випадку:
$ ls -lrt ./!(temp_log.*)
Це вимагає, щоб extglob
опція оболонки була включена за допомогою shopt
вбудованого ( shopt -s extglob
), як заявляє Гілль .
ls --hide='temp_log.$$'
повинен працювати. Ви можете / повинні також продовжити це за допомогою макетів, залежно від того, яка частина всього термінуtemp_log.$$
є.