如何在for循环中重命名fish中的文件扩展名?
How to rename file extentions in fish in a for loop?
这是我试图转换为 fish
:
的等效 bash
脚本
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’
如何正确执行此操作?
我找到了一个替代解决方案:
for file in *.md
mv -v -- "$file" (basename $file .md).txt
end
它就像一个魅力!
鱼shell不支持像bash这样的参数扩展操作。鱼的哲学shell到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
只用鱼来做到这一点:
for j in *.md
mv -v -- $j (string replace -r '\.md$' .txt $j)
end
这是我试图转换为 fish
:
bash
脚本
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’
如何正确执行此操作?
我找到了一个替代解决方案:
for file in *.md
mv -v -- "$file" (basename $file .md).txt
end
它就像一个魅力!
鱼shell不支持像bash这样的参数扩展操作。鱼的哲学shell到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
只用鱼来做到这一点:
for j in *.md
mv -v -- $j (string replace -r '\.md$' .txt $j)
end