写个工具,专门给文件批量改名

#!/bin/bash
###################################################
#@author andrew
#@function  按照顺序重命名
#
###################################################
function changeName()
{
	##碰到有空格的文件名就无法处理,要先删除空格
	ls -1 *.png | xargs -I FL rename " " ""  FL
	FILES=$(find . -maxdepth 1  -iname "*.png" )
	COUNT=0

	if [ $# == 2 ]
	then
		for FL in ${FILES[*]}
		do
			COUNT=$((COUNT+1))
			mv "${FL}"     "fish"${1}_${COUNT}${2}".png"
			echo "${FL}"   "fish"${1}_${COUNT}${2}".png"
		done
	else
		echo "have no root path"
	fi
	echo "param len $#"
}

OLD_PATH=$(pwd)
ALL_FILES=$(find . -maxdepth 1 -type d)

for PARENT in ${ALL_FILES[*]}
do
	P_PATH=${OLD_PATH}/${PARENT}

	if [ "${PARENT}" != "." ]
	then
		###更改根目录下文件名
		cd ${P_PATH}
		changeName  "_a"   "_"$(basename  ${PARENT})

		###更改各个子动画文件名
		FOLDERS=$(find . -maxdepth 1 -type d)
		for ANIM in ${FOLDERS}
		do
			if [ "${ANIM}" != "." ]
			then
				cd ${P_PATH}/${ANIM}
				changeName  "_"$(basename ${ANIM})  "_"$(basename ${PARENT})
				mv *.png  ${P_PATH}
				cd ${P_PATH} 
				rm -rf ${ANIM}
				cd ${OLD_PATH}
			fi
		done
	fi
done 


 

cygwin种标准的批量改名命令是rename:

rename  要更改的内容      改后的内容       要更改的文件*.xxx

猜你喜欢

转载自blog.csdn.net/wulong710/article/details/86250835
今日推荐