用文件名替换文本中的标记

Mat*_*s F 4 grep sed

我有一堆包含令牌-filename-的文本文件.我需要用文件的真实路径和文件名替换它.

多数民众赞成我到目前为止:

grep -lr -e'-filename-'*.txt | xargs sed -i的/ -filename-/therealname/g'

有没有办法用文件名替换therealname

Dav*_*ave 5

再多做一下bash-fu

for x in *.txt; do
    sed -i "s/-filename-/$x/g" $x;
done
Run Code Online (Sandbox Code Playgroud)

当然,换行只是为了清晰起见.随意将其塞进一行.