Em geral, você pode impedir que o shell interprete um metacaractere
escapando com uma barra invertida ( \
). Então, você pode evitar todos o
$
no argumento rename
é expandido com a preposição de um
barra invertida:
echo -n 'rename "-f" "'s/.*([0-9]{11}_[0-9]{11}).*\.(.*\$)/\.\/'" "$output_dir"*.$ext'
Neste caso específico, uma vez que a string s/.*([0-9]...$2/
não
precisa de qualquer substituição no nível do shell (o ponto principal da sua pergunta
é como evitá-los), você pode simplesmente colocá-lo entre aspas simples
( '
) que impede todo o processamento de shell:
echo -n 'rename "-f" 's/.*([0-9]{11}_[0-9]{11}).*\.(.*$)/$1.$2/' "$output_dir"*.$ext'
(Note que você não precisa de aspas em torno do -f
, já que ele não
contém quaisquer metacaracteres de shell.)