Você pode tentar algo assim:
find . -name '*.php' -exec sh -c \
'PREFIX=${1//[!/]/}; PREFIX=${PREFIX//\//..\/}; ...' sh {} \;
Isso definirá PREFIX
para ../
quando o arquivo encontrado for dir/filename
. Em seguida, você pode inserir o comando sed
na posição ...
, fazendo uso da variável $PREFIX
da shell.
Isso requer um shell que tenha a expansão ${var//find/repl}
. Isso não é especificado por POSIX, mas Bash
e algumas implementações de ash
o possuem. Se o seu não, você teria que usar outra coisa para fazer a manipulação do prefixo. Nesse caso, eu usaria um único processo awk
para fazer a manipulação do prefixo em sua cláusula BEGIN
, então a substituição em cada linha do arquivo (em vez de um processo sed
separado).