修改類的前綴,比如類的前綴原來是XYZ兔朦,現(xiàn)在要改成ASD续室,可以用。
使用
sh file.sh -o 舊的前綴 -n 新的前綴 需要替換的目錄
注意事項(xiàng)
- 沒有針對特別復(fù)雜的場景進(jìn)行測試旬牲,使用前記得提交代碼仿粹、切換分支
- 通過文件名進(jìn)行操作,默認(rèn)類名和文件名相同原茅,如果在一個文件中定義了多個類吭历,和文件名相同的類名才會被處理,其他的不會替換擂橘,同理晌区,category也無法處理
- 替換的目錄盡可能小
- 執(zhí)行后,先在Xcode中移除對文件夾的引用通贞,再重新添加引用朗若,這一步會更新project.pbxproj
echo 'sh file.sh -o 舊的前綴 -n 新的前綴 需要替換的目錄'
while getopts "o:n:" opt; do
case $opt in
o)
oldPrefix=$OPTARG
;;
n)
newPrefix=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG"
;;
esac
done
src=${@: -1}
echo $oldPrefix
echo $newPrefix
echo $src
for file in `find $src -name "${oldPrefix}*"`; do
# 文件名,包含后綴
fileName=${file##*/}
if [[ ! -d $file ]]; then
# 文件所在目錄
dir=${file%/*}
# 新的文件名昌罩,包含后綴
nFilePath=${newPrefix}${fileName#${oldPrefix}}
# 新文件的完整地址
nPath=${dir}/${nFilePath}
# 原文件名哭懈,不含后綴
oFileName=${fileName%.*}
# 新文件名,不含后綴
nFileName=${newPrefix}${oFileName#${oldPrefix}}
# 文本替換
LC_ALL=C sed -i "" "s/$oFileName/$nFileName/g" `grep $oFileName -rl $src`
# 重命名文件
mv -v $file $nPath
fi
done