
According to the man pages we should be able to use regex with the native find
command like so:
find -E /Volumes/complete -regex "(?i).*frontline.*"
However it fails. I have tried quite a few variations which have also failed.
find -E /Volumes/complete -regex ".*frontline.*i"
find -E /Volumes/SeedDrive/complete -regex "(?i:.*frontline.*)" find: -regex: (?i:.*frontline.*): repetition-operator operand invalid
find -E /Volumes/SeedDrive/complete -regex "(?i:.*frontline.*)"
find /Volumes/SeedDrive/complete -regex "*[fF]rontline.*"
Don't understand why but single quotes does work:
find -E /Volumes/SeedDrive/complete -regex '.*[fF]rontline.*'
finds “frontline” or “Frontline”
Problem is I also have files that contain FRONTLINE, Frontline, frontline.
man find
says:
The options are as follows:
-E Interpret regular expressions followed by -regex and -iregex primaries as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats.
man re-format
says”
Inline Options (available for enhanced extended REs only)
Like the inline literal mode mentioned above, other options can be switched
on and off for part of a RE. ‘(?o..)’ will turn on the options specified
in o.. (one or more options characters; see below), while ‘(?-o..)’ will
turn off the specified options, and ‘(?o1..-o2..)’ will turn on the first
set of options, and turn off the second set.The available options are: i Turning on this option will ignore case during matching, while turning off will restore case-sensitive matching. If REG_ICASE was specified to regcomp(), this option can be use to turn that off.
…
The scope of the option change begins immediately following the right
parenthesis, but up to the end of the enclosing subexpression (if any).
Thus, for example, given the RE ‘(fu(?i)bar)baz’, the ‘fu’ portion matches
case sensitively, ‘bar’ matches case insensitively, and ‘baz’ matches case
sensitively again (since is it outside the scope of the subexpression in
which the inline option was specified).The inline options syntax can be combined with the non-capturing parenthesized subexpression to limit the option scope to just that of the subexpression. Then, for example, ‘fu(?i:bar)baz’ is similar to the previous example, except for the parenthesize subexpression around ‘fu(?i)bar’ in the previous example.