1

给定一个文件夹,其中包含使用设计名称作为文件一部分的文件,我想svn rename在与设计名称匹配的情况下运行。显示文件的目录列表(比此处显示的更多)具有以下格式:

    reg_ptst_lib_ptst_rtl_12.ngc
    reg_ptst_lib_ptst_rtl_13.ngc
    reg_ptst_lib_ptst_rtl_14.ngc
    reg_ptst_lib_ptst_rtl_15.ngc

设计名称字符串是 ptst。我想让脚本遍历每个文件,执行如下命令:

$svn rename reg_ptst_lib_ptst_rtl_12.ngc reg_scst3_lib_scst3_rtl_12.ngc  

将设计名称从更改为ptst颠覆scst3

4

3 回答 3

9

无需使用 ruby​​ 或 perl,这是一个带有find,awkbash. 在包含您的文件的目录中:

find *.ngc | awk '{ str=$0; gsub(/ptst/,"scst3",str); print "svn rename " $0 " " str }' | bash

您可以首先通过删除 final 来测试它| bash,它将 svn rename 命令打印到终端。

于 2013-03-13T14:40:56.817 回答
0

与 Jon 相同的方法,只是在文件名周围添加引号,以防其他人(如我)想要在文件名包含空格时执行类似的操作。

find *.ngc | awk '{ str=$0; gsub(/ptst/,"scst3",str); print "svn rename \"" $0 "\" \"" str "\""}' | bash
于 2017-01-09T20:02:06.093 回答
0

我已经为此任务(称为tacklebar项目)使用了总指挥官 + Windows 批处理文件。您可以采用任何其他命令器,例如 Far 或 Double Commander,只要它可以通过键盘快捷键或工具栏按钮调用带有所选文件参数的脚本(当前安装程序仅支持 Total Commander)。

想法是在指挥官应用程序中选择要重命名的文件/目录(无论它们是否受版本控制)并将它们放入临时创建的文本文件中(Total Commander 通过%L变量自动执行)和然后调用脚本来重命名该列表文件选择的路径。

该脚本只是将列表文件复制到 2 个临时列表文件中并打开,例如,Notepad++ 以编辑第二个列表文件。在 Notepad++ 中完成文件重命名后,关闭编辑器并保存更改,然后脚本比较两个列表并进行重命名。

您可以通过运行以下命令将脚本和所有其他脚本安装到 Total Commander 按钮栏中_install.bat

https://sf.net/p/tacklebar/tacklebar/HEAD/tree/trunk/

要安装 3d 方依赖项,请_install.bat从以下位置运行:

https://sf.net/p/tacklebar/external_tools/HEAD/tree/trunk/

github上的项目:

https://github.com/andry81/tacklebar https://github.com/andry81/tacklebar/blob/trunk/README.md

于 2018-07-19T19:08:40.640 回答