怎样批量重命名文件(格式相同,但文件名序号不变)2
发布网友
发布时间:2023-10-28 01:27
我来回答
共1个回答
热心网友
时间:2024-11-30 10:47
#
# 本程序功能描述:
# 批量文件名重命名。
#
# 本程序的典型调用方法:
# ./BatchRename.sh absPath strOld strNew
#
# 其中:
# absPath 表示欲批量改名的文件所在文件夹的绝对路径
# strOld 表示文件名中要替换掉的字符串,可以是正则表达式
# strNew 表示文件名中要替换成的字符串,可以是正则表达式
#
# Version history:
# 2010-07-28 v1.2 Rewrite with shell parameters supporting.
# 2010-07-25 v1.0 Created by Yang Wang.
#
# For debugging purpose.
# echo $1
# echo $2
# echo $3
# 如果表示绝对路径的 $1 以 / 结尾,则去掉。再将去掉可能存在的 / 后的绝对路径赋给 absPath。
absPath=${1/%\//}
# For debugging purpose.
# echo $absPath
# exit 1
# 判断输入参数的个数是否正确
if [ $# != 3 ]; then
echo "USAGE: ./BatchRename.sh absPath strOld strNew"
echo " e.g.: G:/TrainingTools/SupportingTools/UsefulScripts/BatchRename.sh G:/Corpus/yyx/data_for_Nokia/labels_original/full/ male7000 male"
exit 1
fi
# 在循环中批量更改文件名,$i 是带有绝对路径的完整文件名。
for i in $absPath/`ls $absPath`; do
# echo $i
fileName=`basename $i`
echo "Renaming $fileName ..."
# echo $absPath/$fileName
# echo $absPath/`echo $fileName | sed "s/$2/$3/"`
mv $absPath/$fileName $absPath/`echo $fileName | sed "s/$2/$3/"`
done
echo "Done!"