linux转换大小写的脚本代码,文件名大小写转换的shell脚本

方法1、

//bug:当文件里有还有文件夹,这时,会把文件夹里最后一个文件名命名这个文件夹!

for uppercase in

`ls`

do

for lowercase in `ls $uppercase|tr [A-Z] [a-z]`

do

mv

$uppercase $lowercase 2>/dev/null

done

done

方法2、

//bug:

就是有点会报错,当有文件夹,和该sh在要改文件名大小写的目录内:

for file in `ls`

do

mv $file

`echo $file|tr "[A-Z]" "[a-z]"`

done

方法3、

#!/bin/sh

for

I in `ls` ;

do

C=$(echo $I|awk '{print toupper($I)}')

mv $I $C

done

法6、

//hen hao ,hen qiang da!

#!/bin/sh

############################################################

#

this script will change file name recursively with option

# -u:

locase to upcase

# -l: upcase to lowcase

############################################################

hint

() {

echo " Usage: $0 [-l|-u] DIR1 [DIR2 DIR3...]

-l to lowcase

-u

to upcase"

exit 1

}

if test $# -lt 2; then

echo "Too

few arguments."

hint

fi

while [ "$1" ]; do

case $1 in

-l)

ACTION="lo"

shift 1

;;

-u) ACTION="up"

shift 1

;;

*)

if test -d $1; then

DIR="$DIR $1"

else

echo "no such directory

--- $1"

hint

fi

shift

;;

esac

done

# echo

$ACTION

# echo $DIR

FOUND=`find $DIR | sort -r`

for

i in $FOUND; do

DN=`dirname $i`

BS=`basename $i`

loBS=`echo

$BS | tr '[A-Z]' '[a-z]'`

upBS=`echo $BS | tr '[a-z]' '[A-Z]'`

NAME1=$DN/$BS

if

[ "$ACTION" = "lo" ]; then

NAME2=$DN/$loBS

elif [ "$ACTION" =

"up" ]; then

NAME2=$DN/$upBS

fi

if [ "$NAME1" = "$NAME2" ];

then

echo "****: $NAME1 ---x--- $NAME2 identical!"

else

echo

"- renaming $NAME1 --> $NAME2"

mv $NAME1 $NAME2

fi

done

find

得到结果并不能直接拿来处理,因为它是自上而下的,而目录一旦改名,子目录就全抓瞎了。而经过排序后(先处理最深的目录,由里向外)就能用了。

阅读(1612) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值