我可以编写以下脚本来完成它。但它对我的情况并不完美。
CCUSTOMER_NAME="Abcd"
PATHS=$(find . -name "Template*")
echo $path
for path in $PATHS
do
name=$(basename $path)
newname=${CUSTOMER_NAME}"$(echo "$name" | cut -c9-)"
mv "$name" "$newname"
done
我有一个如下所示的文件夹结构。
-/TemplateProjectA
-/TemplateProjectB
-/TemplateFiles
-/TemplateMyFile.xml
-/TemplateProjectC
目前,它给出的输出如下
-/<CUSTOMER_NAME>ProjectA
-/<CUSTOMER_NAME>ProjectB
-/TemplateFiles
-/TemplateMyFile.xml
-/<CUSTOMER_NAME>ProjectC
如您所见,它遗漏了两个文件,出现以下错误。
mv: cannot stat 'TemplateFiles': No such file or directory
mv: cannot stat 'TemplateMyFile.xml': No such file or directory
原因是,我首先列出以“模板”开头的文件夹/文件的路径。但它首先重命名外部文件夹,无法找到内部文件/文件夹。我在任何地方都找不到正确描述的类似 sinario。
非常感谢任何帮助!!
首先将所有候选文件/目录按相反顺序排序可以防止先重命名外部文件夹的问题:
MATCH=Template
REPLACEMENT=Abcd
find -name "${MATCH}*" | sort -r | while read path; do
newname=$(basename ${path} | sed "s/${MATCH}/${REPLACEMENT}/")
mv "${path}" "$(dirname ${path})/${newname}"
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句