Если у вас есть имя файла, определенное как
filename:`2019.01.20file.txt
Вы можете сравнить это с шаблоном, используя like
, аналогично тому, что вы сделали:
filename like "[0-9]*"
"*"
- это символ подстановки, который означает, что после [0-9]
like
все может сравниться с шаблоном
Таким образом, эта строка возвращает 1b, если имя файла начинается с цифры от 0 до 9.
Другим способом будет сравнение начала имени файла с .Qn, который является строкой0-9.Это может быть достигнуто следующим образом:
first[string filename] in .Q.n
string
преобразует символ в строку для in
, чтобы сравнить его со строкой .Qn
ДляВаша ситуация, я бы порекомендовал первый способ.
q)key `:q
`README.txt`q.k`q.q`s.k`sp.q`w32
q)key[`:q] like "q*"
011000b
q)x where (x:key[`:q]) like "q*"
`q.k`q.q
q)x where not (x:key[`:q]) like "q*"
`README.txt`s.k`sp.q`w32
Этот метод возвращает логический список, который указывает, начинается ли каждый файл с «q»:
- Использует
not
для обращения 1 и 0 этого списка - Использует
where
для возврата индексов, для которых логический список равен 1 - Индексы в
key[`:q]
с этим списком
Надеюсь, это поможет