我想将我的Git项目中的所有erb文件重命名为haml。(例如index.html.erb到index.html.haml)
如果我重命名每个文件,我必须输入以下命令超过三十次。
$ git mv app/views/pages/index.html.erb app/views/pages/index.html.haml
我尝试了下面的命令,但它没有用。
$ git mv app/views/**/*.erb app/views/**/*.haml
usage: git mv [options] <source>... <destination>
-n, --dry-run dry run
-f, --force force move/rename even if target exists
-k skip move/rename errors
如何立即重命名?
答案 0 :(得分:27)
for i in $(find . -iname "*.erb"); do
git mv "$i" "$(echo $i | rev | cut -d '.' -f 2- | rev).haml";
done
对于每个.erb文件,git mv
它自身,扩展名“.erb”替换为“.haml”。
答案 1 :(得分:1)
一个使用powershell的衬垫
Dir *.erb -Recurse | foreach { git mv $_.FullName $_.FullName.replace("erb", "haml")}
答案 2 :(得分:1)
这对我使用Powershell有用:
Get-ChildItem -File | foreach { git mv ($_.BaseName+".js") ($_.BaseName+".ts") }
为了安全起见,我选择不添加-Recurse。
使用任何所需的文件扩展名替换。
答案 3 :(得分:0)
在Windows中,您需要2个批处理文件。 1我们将生成,另一个是固定的。
以下示例git将所有* .js递归重命名为* .ts 假设:filename没有空格。
@echo off
set _srcfile=%1
set _tgtfile=%_srcfile:.js=.ts%
git mv %_srcfile% %_tgtfile%
将其保存在 git-rn-all.bat
所在的同一地点/目录cd'C:\ projects \ some-git-project \ src \ client \ app' dir / a / s / b * .js&gt; GIT-RN-all.bat
修改 git-rn-all.bat 和文本替换所有公共基本路径以添加对 git-rn.bat 的调用。任何文本编辑器都可以轻松实现。
示例:
C:\项目\一些-git的项目\ SRC \客户\应用\ app.module.js
变为
调用git-rn.bat C:\ projects \ some-git-project \ src \ client \ app \ app.module.js
你会看到相当大的输出
删除 git-rn-all.bat 和 git-rn.bat 您可能不再需要它们了。
答案 4 :(得分:0)
除了@Borealid的答案,它可能更简单:
for i in $(find . -iname "*.[old-extension]"); do
git mv "$i" "${i/[old-extension]/[new-extension]}";
done
[old-extension]
和[new-extension]
应该替换为真实扩展名。
斜杠(/
)是字符串中的bash syntax替换。
答案 5 :(得分:0)
虽然这并不是确切问题的答案,但它仍然与该问题标题匹配,因此我认为它可能会为像我这样的人提供帮助,他们来到这里谷歌搜索以通过在文件扩展名前添加后缀来执行git重命名(对我有用):
for i in *.<file extension>
do
git mv -v "${i}" "${i%.*}_SUFFIX.${i##*.}"
done
<file extension>
应该替换为您所需的类型,例如C(用于C文件)_SUFFIX
应该用文件类型前的后缀替换git