Se for especificamente este comando, observe que com Perl para o operador s///
você pode escolher outros delimitadores além de /
, o que torna sua vida muito mais fácil, já que você não precisa escapar de nada.
Por isso, o seguinte funcionará:
perl -pi -w -e 's!http://my.site/dir!http://new.my.site/dir!g;' *.txt
Você pode usar qualquer outro caractere que não seja !
se desejar, desde que não apareça nem na fonte nem na string de substituição. Além disso, como todo o "script" está em '
, seu conteúdo não é analisado pelo shell, portanto, você também está protegido contra interpolações de shell de itens como $
e outros.
Veja link para todos os detalhes.