从选项手册中启用干运行模式,即在不改变真实文件的情况下模拟替换。rpl
-s
如果我尝试的话我会得到以下输出:
$ rpl --dry-run 'JLCPCB Part #' 'LCSC Part #' *
rpl: Simulating replacement of "JLCPCB Part #" with "LCSC Part #" (case sensitive; partial words matched)
rpl: The files listed below would be modified in a replace operation
/home/mark/Kicad/library/fmt_adc.kicad_sym
/home/mark/Kicad/library/fmt_connectors.kicad_sym
/home/mark/Kicad/library/fmt_device.kicad_sym
/home/mark/Kicad/library/fmt_diodes.kicad_sym
/home/mark/Kicad/library/fmt_interface.kicad_sym
/home/mark/Kicad/library/fmt_modules.kicad_sym
/home/mark/Kicad/library/fmt_power.kicad_sym
/home/mark/Kicad/library/fmt_switches.kicad_sym
/home/mark/Kicad/library/fmt_transistor.kicad_sym
rpl: 24 matches found in 9 out of 21 files
但这没什么用,因为我看不到它实际上会做出哪些更改。即使添加了详细标志也无法显示更改。
这是实现真正试运行的一种方法吗?我预期的输出将是这样的:
old-text: ./fmt_adc.kicad_sym:70: (property "JLCPCB Part #" "C84284"
new-text: ./fmt_adc.kicad_sym:70: (property "LCSC Part #" "C84284"
等等。
我不太熟悉
rpl
,因为它不像sed
或之类的工具那么常用awk
,而或几乎随任何 Linux 安装而来,并且可以做更多的事情。使用
sed
,我只需执行以下操作来替换OLD STRING
“NEW
on the dry”:要实际执行替换:
当然,您也可以将其应用于文件,打印每个文件的文件名:
但坦率地说......您的用例只是要求正确的文本文件管理,而不是像我上面的一些手动调用!
Kicad 符号库首先是一个 git 存储库。我不知道你的主目录中的东西是否也是,所以如果你不确定,
如果显示“
fatal: not a git repository
”,则将其设为 git 存储库:然后只需进行替换,而不是空运行。即,
rpl
不使用运行--dry-run
,或者直接使用sed -i 's/OLD STRING/NEW/g' *
。之后,你可以使用以下方法查看更改的内容
然后,您可以将要保留更改的文件添加到索引中:
并将其余部分恢复到其原始状态
最后提交更改,使它们成为新的应有状态:
(然后您可以检查所做的更改历史记录
git log -p
)