Без примера ввода и ожидаемого вывода я не могу проверить 100%, но я почти уверен, что вам просто нужно экранировать /
в пути к файлу и &
:
find ./ -type f -exec sed -i 's/PHRASE=TEST/pwds=`gpg --decrypt ~\/test.gpg` \& eval "$pwds"/gI' {} \;
Или, если хотите, вы можете избежать первого побега, изменив разделитель команды s
:
find ./ -type f -exec sed -i 's|PHRASE=TEST|pwds=`gpg --decrypt ~/test.gpg` \& eval "$pwds"|gI' {} \;
Пример:
$ cat file.txt
line 1
line 2 PHRASE=TEST
line 3
$ find ./ -type f -exec gsed -i 's/PHRASE=TEST/pwds=`gpg --decrypt ~\/test.gpg` \& eval "$pwds"/gI' {} \;
$ cat file.txt
line 1
line 2 pwds=`gpg --decrypt ~/test.gpg` & eval "$pwds"
line 3