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

时间:2016-07-26 12:39:39

标签: fish

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

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”

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

3 个答案:

答案 0 :(得分:7)

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

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

它就像一个魅力!

答案 1 :(得分:2)

fish shell不支持像bash这样的参数扩展操作。鱼壳的哲学是let existing commands do the work instead of re-inventing the wheel。您可以使用sed例如:

for file in *.md
    mv "$file" (echo "$file" | sed '$s/\.md$/.txt/')
end

答案 2 :(得分:1)

用鱼做这个:

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