\fé o caractere de feed de formulário no Perl. Parece que esses arquivos malformados foram criados por alguém novo no Perl e no XML.
Aqui está uma correção muito Perlier - que também atende aos objetivos do OP de automatizar a atualização de todos os arquivos, ao contrário da resposta aceita com sed, que só funcionará em um arquivo por vez, pois não está emparelhado com find .
\fpode simplesmente ser empregado em vez do código hexadecimal x0c.
find . -type f -exec perl -pi.bkp -e 's [ \f ilename ][ /f ilename ]gx' {} \;
Aqui eu adicionei -type fao tel findpara retornar apenas arquivos simples - caso contrário find, retornará .à lista e acionará um aviso quando você tentar editá-lo, embora tudo o mais ainda funcione.
Também facilitei a visualização do regex usando a xflag que ignora o espaço em branco real, permitindo espaçar os elementos do seu regex. Se você não gosta disso, aqui está sem:
find . -type f -exec perl -pi.bkp -e 's[\filename][/filename]g' {} \;
E, no provável caso de todos os caracteres de feed de formulário serem falsos e todos serem substituídos por /f, você pode reduzir ainda mais a linha única:
find . -type f -exec perl -pi.bkp -e 's[\f][/f]g' {} \;
Você não precisa usar barras para cercar os elementos do comando de substituição de expressões regulares ( s///) no Perl. Você pode usar qualquer símbolo. Se você optar por usar qualquer tipo de símbolo parecido com colchete, no entanto, precisará usar os dois: s[old][new]por exemplo.
Como não estou usando barras, não preciso escapar de nenhuma barra.
Quanto a -i.bkp: perl -pi -epermite editar no local - mas se você quiser um seguro extra, caso o programa Perl encontre e substitua errado, você pode colocar uma extensão de arquivo para que ele faça uma cópia dos arquivos originais para você. Aqui, eu usei .bkp.
Nas versões mais recentes do Perl, a edição no local foi atualizada para ser mais resiliente, caso o seu sistema sofra um problema sério, como perda de energia ou falta de espaço em disco também. Aqui está o autor do Perl, Brian Doye, sobre a edição aprimorada no local nos Perls recentes.
Você deve considerar o uso de Perl para esses tipos de tarefas, porque é uma linguagem de programação de uso geral extremamente poderosa, porém subestimada, cujo objetivo original do projeto era substituir sede awkpor algo muito melhor.
Os recursos de correspondência de regex do Perl 5 e a sintaxe aprimorada de regex excedem em muito os de sed,awk e de fato qualquer outra linguagem de programação além do Perl 6, tornando o Perl a escolha mais sensata para manipulações simples e avançadas de regex.
Para esclarecer: sedtambém funcionará bem finde você também pode sed -i.bkpfazer um backup de cada arquivo editado, mas até onde eu sei, ele não apresenta a resiliência extra no Perl 5.28 e posterior. Ele também usa a sintaxe de regex UNIX® tradicional, muito mais barulhenta e menos poderosa.
<\filename>vez de</filename>em um contexto em\fque seria interpretado como o caractere de feed de formulário. Você provavelmente deve rastrear a origem desses arquivos e apontar o problema com a ferramenta de geração para o desenvolvedor. Para corrigir os arquivos, a resposta aceita é ótima.