iOS 修改类的前缀

修改类的前缀,比如类的前缀原来是XYZ,现在要改成ASD,可以用。

使用

sh file.sh -o 旧的前缀 -n 新的前缀 需要替换的目录

注意事项

  1. 没有针对特别复杂的场景进行测试,使用前记得提交代码、切换分支
  2. 通过文件名进行操作,默认类名和文件名相同,如果在一个文件中定义了多个类,和文件名相同的类名才会被处理,其他的不会替换,同理,category也无法处理
  3. 替换的目录尽可能小
  4. 执行后,先在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

你可能感兴趣的:(iOS 修改类的前缀)