在macOS上使用终端,我想以递归方式替换一个具有目录和文件名名称的单词。例如,我有一个角度应用程序,模块名称是文章,所有文件名和目录名称都包含文章。我已经完成了一个查找和替换,用代码中的苹果替换文章。现在我想对文件结构做同样的事情,因此文件名和目录共享相同的约定。
仅仅是为了获取信息,我已经尝试使用最新的Yeoman生成器来创建新文件,但似乎存在问题。另一种方法是复制目录并重命名所有文件,这非常耗时。
答案 0 :(得分:0)
使用以下脚本
var=$1
if [ -n "$var" ]; then
CRUDNAME=$1
CRUDNAMEUPPERCASE=`echo ${CRUDNAME:0:1} | tr '[a-z]' '[A-Z]'`${CRUDNAME:1}
FOLDERNAME=$CRUDNAME's'
# Create new folder
cp -R modules/articles modules/$FOLDERNAME
# Do the find/replace in all the files
find modules/$FOLDERNAME -type f -print0 | xargs -0 sed -i -e 's/Article/'$CRUDNAMEUPPERCASE'/g'
find modules/$FOLDERNAME -type f -print0 | xargs -0 sed -i -e 's/article/'$CRUDNAME'/g'
# Delete useless files due to sed
rm modules/$FOLDERNAME/**/*-e
rm modules/$FOLDERNAME/**/**/*-e
rm modules/$FOLDERNAME/**/**/**/*-e
# Rename all the files
for file in modules/$FOLDERNAME/**/*article* ; do mv $file ${file//article/$CRUDNAME} ; done
for file in modules/$FOLDERNAME/**/**/*article* ; do mv $file ${file//article/$CRUDNAME} ; done
for file in modules/$FOLDERNAME/**/**/**/*article* ; do mv $file ${file//article/$CRUDNAME} ; done
else
echo "Usage: sh rename-module.sh [crud-name]"
fi
显然,我并不是唯一遇到此问题的人