2016-07-26 60 views
4

下面是对应的bash脚本,我想转换为fish如何在for循环中重命名鱼中的文件扩展?

for j in *.md; do mv -v -- "$j" "${j%.md}.txt"; done 

这里是我的尝试:

for file in *.md 
    mv -v -- "$file" "{{$file}%.md}.txt" 
end 

但它只是结束了重命名的所有文件,如下所示:

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

我该如何正确做到这一点?

+0

为什么我得到-1? – codehitman

+0

你看过手册吗?如果是,为什么你期望不支持的语法工作?如果没有,你为什么不阅读手册,而不是在这里问废话? – hek2mgl

+0

我试了几件事,并纠正了这个问题。谢谢! – codehitman

回答

4

我找到了一个替代解决方案是:

for file in *.md 
    mv -v -- "$file" (basename $file .md).txt 
end 

它的工作原理就像一个魅力!

1

要做到这一点正好与鱼:

for j in *.md 
    mv -v -- $j (string replace -r '\.md$' .txt $j) 
end