以下是我尝试转换为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”
我该如何正确地做到这一点?
答案 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