Обратите внимание, что -regex
/-iregex
(расширения GNU ), как и стандартное -path
, соответствуют полному пути, а не только имени файла.
Если вы хотите найти файлы, у которых имя(в отличие от пути)начинается с 2 десятичных цифр, за которыми следует что-то, что не является десятичной цифрой и заканчивается на .flac
, вы можно сделать портативно:
find. -name '[0-9][0-9][!0-9]*.[fF][lL][aA][cC]'
Обратите внимание, что это не будет соответствовать на 01.flac
, потому что [!0-9]
не может соответствовать там. Вместо этого вы могли бы написать это:
find. -name '[0-9][0-9][!0-9]*' -name '*.[fF][lL][aA][cC]'
В них используются подстановочные знаки, а не регулярные выражения.
Чтобы использовать GNU find
's -iregex
, эквиваленты были бы:
find. -regextype egrep -iregex '.*/[0-9]{2}[^0-9/][^/]*\.flac'
find. -regextype egrep -iregex '.*/[0-9]{2}([^0-9/][^/]*)?\.flac'
То есть мы привязываем две цифры в начале, чтобы убедиться, что остальная часть регулярного выражения не охватывает /
.