Я думаю, что вы хотите использовать функцию оболочки, а не из ls. Я использую Bash, поэтому я проверил, что вы хотите в man bash. Найдите «^ EXPANSION», (сначала нажав «/»). Выдержка:
РАСШИРЕНИЕ
Расширение выполняется в командной строке после того, как оно было разбито на слова. Есть семь видов расширения выполняется: в фигурных скобках , тильды , параметров и переменных расширения , подстановки команд , арифметическое расширение , слово расщепления и расширения имен файлов .
︙
... <snip> ...
︙
Расширение пути
После слов расщепления, если -f параметр не установлен, Баш сканирует каждое слово для символов *, ?и [. Если появляется один из этих символов, слово считается шаблоном и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону. ...
Недавно я начал исключать файлы на основе их первой буквы с помощью команды вроде:
$ ls ./[^t]*
Это будет соответствовать всему, что не начинается с буквы t. Если вы добавите больше символов в скобки, то вы исключите файлы, начинающиеся с этих букв.
Ищу ссылку, а у меня хорошая! Смотрите Pattern Matching . Оттуда это будет работать для вашего случая:
$ ls -lrt ./!(temp_log.*)
Для этого необходимо, чтобы extglobопция оболочки была включена с помощью shoptвстроенной функции ( shopt -s extglob), как указано Жилем .
ls --hide='temp_log.$$'должно работать. Вы можете / должны также расширить это с помощью подстановочных знаков, в зависимости от того, какая часть целого терминаtemp_log.$$.