最近的产品品牌重塑促使我将工作区中旧产品名称的每个实例更改为新产品名称。这不仅涉及更改每种文件类型的源代码,还涉及文件和目录名称。
此外,源代码由SVN控制。因此,我不想要改变.svn目录中的任何内容。这增加了一个有趣的警告...
以下脚本基本上就是我使用的" oldname"是旧产品名称和" newname"是新的。我在更改文件和目录名时遇到问题。我确定它与在文件系统上动态重命名这些路径有关。另外,我还没想出如何跳过.svn目录。我想知道是否有更聪明的方法可以使用Python?
(如果产品名称再次更改,我希望这是一个脚本)
#!/bin/sh
exts=('*.m', '*.java');
# change text
for ext in "${exts[@]}"
do
find . -name $ext -type f -exec sed -i 's/oldname/newname/' {} \;
find . -name $ext -type f -exec sed -i 's/OldName/NewName/' {} \;
find . -name $ext -type f -exec sed -i 's/OLDNAME/NEWNAME/' {} \;
done
# change file names
find . -name "*oldname*" -type f -exec rename oldname newname {} \;
find . -name "*OldName*" -type f -exec rename OldName NewName {} \;
find . -name "*OLDNAME*" -type f -exec rename OLDNAME NEWNAME {} \;
# change directory names
find . -name "*oldname*" -type d -exec rename oldname newname {} \;
find . -name "*OldName*" -type d -exec rename OldName NewName {} \;
find . -name "*OLDNAME*" -type d -exec rename OLDNAME NEWNAME {} \;
答案 0 :(得分:0)
find ... -exec
糟糕的想法(tm):find ... -print0 | xargs -0
将好多了 svn mv
find -not -iwholename '*.svn' -name ...