Assumindo as ferramentas GNU
(que você parece estar usando):
grep -r --include='*.tex' -lZ '{fig/.*}' . |
xargs -r0 sed -i.back 's:\({fig/[^}]*\)}:.png}:g'
grep
para encontrar a lista de arquivos a serem atualizados, sed
para fazer a atualização apenas para esses arquivos.
Ou se você quiser adicionar apenas o .png
, se ele não estiver lá, o grep
do GNU terá uma opção -P
para o regEXp do PCRE com seu operador de look-behind (?<!...)
negativo, mas não o GNU sed
ainda (embora ssed
na mesma família tenha), então mude para perl
aqui:
grep -Pr --include='*.tex' -lZ '\{fig/[^}]*(?<!\.png)\}' . |
xargs -r0 perl -pi.back -e 's:(\{fig/[^}]*(?<!\.png))\}:$1.png}:g'
Com -i.back
, o arquivo original é salvo com a extensão .back
.