怎样批量重命名文件(格式相同,但文件名序号不变)
怎样批量重命名文件(格式相同,但文件名序号不变)?如:N0001-1N0001N0002N0003N0003-1,删除N字,应怎样操作如果是050105020503050...
怎样批量重命名文件(格式相同,但文件名序号不变)?如:
N0001-1 N0001 N0002 N0003 N0003-1,删除N字,应怎样操作
如果是0501 0502 0503 0504 ,删除前面的O应怎样操作 展开
N0001-1 N0001 N0002 N0003 N0003-1,删除N字,应怎样操作
如果是0501 0502 0503 0504 ,删除前面的O应怎样操作 展开
1个回答
展开全部
#
# 本程序功能描述:
# 批量文件名重命名。
#
# 本程序的典型调用方法:
# ./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!"
# 本程序功能描述:
# 批量文件名重命名。
#
# 本程序的典型调用方法:
# ./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!"
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |