Я думаю, что вы хотите использовать функцию оболочки, а не из 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.$$
.