D'après les pages de manuel, nous devrions être en mesure d'utiliser les expressions rationnelles avec la fonction native find
comme suit :
find -E /Volumes/complete -regex "(?i).*frontline.*"
Cependant, il échoue. J'ai essayé plusieurs variantes qui ont également échoué.
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.*"
Je ne comprends pas pourquoi, mais les guillemets simples fonctionnent :
find -E /Volumes/SeedDrive/complete -regex '.*[fF]rontline.*'
trouve "frontline" ou "Frontline"
Le problème est que j'ai aussi des fichiers qui contiennent FRONTLINE, Frontline, frontline.
man find
dit :
Les options sont les suivantes :
-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
dit"
Options en ligne (disponibles uniquement pour les RE étendus améliorés) À l'instar du mode littéral en ligne mentionné ci-dessus, d'autres options peuvent être activées ou désactivées pour les parties de texte. être activées ou désactivées pour une partie d'un RE. L'option '(?o..)' activera les options spécifiées dans o.. (un ou plusieurs caractères d'options ; voir ci-dessous), tandis que '(?-o..)' activera les options spécifiées dans o.. (un ou plusieurs caractères d'options ; voir ci-dessous), tandis que désactivera les options spécifiées, et '(?o1..-o2..)' activera le premier ensemble d'options et désactivera la seconde.
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.
...
Le champ d'application du changement d'option commence immédiatement après le droit mais jusqu'à la fin de la sous-expression englobante (s'il y en a une). Ainsi, par exemple, étant donné le RE '(fu(?i)bar)baz', la partie "fu" correspond à est sensible à la casse, "bar" est insensible à la casse et "baz" est sensible à la casse. sensible à la casse (puisqu'elle est en dehors de la portée de la sous-expression dans dans laquelle l'option inline a été spécifiée).
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.