Для оригинальных простых примеров, которые вы перечислили, abc_[0-9]*.xyz
будет работать. Это, очевидно, будет соответствовать некоторым вещам, кроме чисел, но исключит файлы def
, которые вы указали в качестве первого символа после первого подчеркивания, не являющегося цифрой в этих случаях.
Для более сложных примеров, вероятно, пришло время развертывания find
, чтобы мы могли использовать регулярные выражения:
$ ls
abc_123_123.xyz abc_123.xyz abc_234_234.xyz abc_234.xyz abc_345_345.xyz abc_345.xyz abc_def_123.xyz abc_def_234.xyz abc_def_345.xyz
$ find. -regex '\./abc_[0-9]+\.xyz'
./abc_345.xyz
./abc_234.xyz
./abc_123.xyz
Это касается GNU find
, другие варианты могут незначительно отличаться.
Подобные круглые скобки используются для инициализации индексированных и ассоциативных массивов Bash . Пустая пара скобок представляет собой пустой массив.
Все эти переменные описаны в документации Bash :BASH_CMDS
, BASH_LINENO
, BASH_SOURCE
.