批量替换目录下面的文件为大写或小写

Shell脚本批量转换文件名
本文介绍了一个实用的Shell脚本,该脚本能够帮助用户将指定目录下的所有文件名转换为统一的小写或大写格式。通过简单的命令行操作即可实现文件名的批量修改,适用于需要标准化文件名格式的场景。

#!/bin/sh
# Usage: ./loworup.sh <-l | -u> <target_directory>
#
# 碌诙镁脨虏伪脴毛目录拢卢碌脷禄脨虏脦赂露篓-l禄貌#
if [ $# -ne 2 ] ; then
     echo "Usage: ${0} <-l | -u> <target_directory>"
     exit 1
fi
if [ ! -d ${2} -o "${1}" != "-l" -a "${1}" != "-u" ] ; then
     echo "Usage: ${0} <-l | -u> <target_directory>"
     exit 1
fi
exec 1>/dev/null 2>&1
dir=`dirname "${2}"`
cd ${dir}
if [ "${1}" = "-l" ] ; then
     base=`basename "${2}" | tr "[A-Z]" "[a-z]"`
else
     base=`basename "${2}" | tr "[a-z]" "[A-Z]"`
fi
mv -f "`basename ${2}`" "${base}"
for entry in `find ${base}`
do
     before="."
     #
     # 脮赂枚篓脪5for in脫路篓拢卢脫驴崭帽指么卢脣脪虏禄脛麓娄脌脛些卤戮脡脙脳麓酶    # 赂帽驴录脧拢卢脢脫小BUG
     #
     for after in `echo "${entry}" | sed -e 's,/, ,g'`
     do
         tmp_entry="${before}/${after}"
         if [ "${1}" = "-l" ] ; then
             before=`echo "${tmp_entry}" | tr "[A-Z]" "[a-z]"`
         else
             before=`echo "${tmp_entry}" | tr "[a-z]" "[A-Z]"`
         fi
         mv -f "${tmp_entry}" "${before}"
     done
done

 

 

 

使用sh -x 2.sh -l /root/test   把这个目录下面的全部替换为小写了

sh -x 2.sh -u /root/test   把这个目录下面的全部替换为大写了

 

 本文转自 liang3391 51CTO博客,原文链接:http://blog.51cto.com/liang3391/577778



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值