С sed
будет работать следующее:
find . -type f -name '*.md' -print0 | xargs -0 sed -i -E 's/(^|[^!])\[(.*?)\]\(.*?\)/\1\2/g'
Если доступно Perl
, попробуйте что-то вроде:
find . -type f -name '*.md' -print0 | xargs -0 perl -pe 's/(?<!!)\[(.*?)\]\(.*?\)/$1/g' -i
Фрагмент (?<!!)
в регулярном выражении представляет собой negative lookbehind
и
он запрещает регулярному выражению сопоставлять подстроку, которой предшествует !
.