zeerd's blog     Article     Search     About     Tags     Pebble     Feed

闲来生雅趣,无事乐逍遥。对窗相望雪,一盏茶香飘。

递归替换指定路径及子路径下的文件扩展名

#C99


一个shell脚本。用于递归替换指定路径及子路径下的文件扩展名。我不清楚是否linux下已经有命令可以实现了……

 
#!/bin/bash

function chgext(){
for file in ` ls $1 -A`
do
if [ -d $1"/"$file ]
then
chgext $1"/"$file $2 $3
else
local path=$1"/"$file #得到文件的完整的目录
local name=$file #得到文件的名字

local file_ext=${name##*.}
local file_head=${name%.*}

if [[ $file_ext == $2 ]];then
echo $1"/"$file_head.$2 " => " $file_head.$3
mv $1"/"$file_head.$2 $1"/"$file_head.$3
fi

fi
done
}

# $1 -- workpath
# $2 -- extname from
# $3 -- extname to
# Example : chgext.sh . php html
# Change all *.php to *.html including the subdirectories
chgext $1 $2 $3