如何在for循环中重命名fish中的文件扩展名?

cod*_*man 7 fish

这是bash我尝试转换为的等效脚本fish:

for j in *.md; do mv -v -- "$j" "${j%.md}.txt"; done
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

for file in *.md
    mv -v -- "$file" "{{$file}%.md}.txt"
end
Run Code Online (Sandbox Code Playgroud)

但它最终会重命名所有文件,如下所示:

'amazon.md' - >'{{amazon.md}%.md} .txt'

我该怎么做呢?

cod*_*man 8

我找到了另一种解决方案:

for file in *.md
    mv -v -- "$file" (basename $file .md).txt 
end
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力!


gle*_*man 6

只用鱼来做到这一点:

for j in *.md
    mv -v -- $j (string replace -r '\.md$' .txt $j)
end
Run Code Online (Sandbox Code Playgroud)