Os elementos \<
e \>
têm um significado especial na regex de sed (como limites de palavras).
Não dificulte as coisas usando /
como separador do sed e tentando obter o escape certo - escolha um delimitador alternativo que não apareça no seu texto, como %
ou |
.
O comando i
( insert ) parece-me uma escolha mais natural do que o comando s
para esta tarefa: você pode tentar
'\%</form>% i\<input type="hidden" name="_token" value="<cfoutput>#STOKEN#</cfoutput>"/>'
Para aplicar esse comando aos subdiretórios recursivamente, você pode fornecer o comando sed como um argumento -exec
ou -execdir
para find
, por exemplo,
find path/to/dir -type f -name '*.cfm' -execdir sed -i -re '\%</form>% i\<input type="hidden" name="_token" value="<cfoutput>#STOKEN#</cfoutput>"/>' {} +
Como alternativa, você pode usar a funcionalidade globstar
do shell.