​Linux目录递归改变文件名大小写​



[root@localhost Desktop]# ls

experiment-2.6-new.tar.bz2

digui-dir-del-M.sh

digui-dir-indent.sh

experiment

[root@localhost Desktop]#




第一步:

[root@localhost Desktop]# ./digui-dir-del-M.sh experiment


digui-dir-del-M.sh 文件内容如下:



#!/bin/sh


eachd() {

        for chkfile in $1/*

        do

                if [[ -f "$chkfile" ]]

                then

                    result=`file $chkfile |awk '{print $2}'`

                    if [ "$result" == "ASCII" ]

                    then

                        #unix下时,你经常会看见每行文件后面有个讨 厌的^M 字符,有两个简单的方法可以取消它。 用"vi"打开此文件,在Command mode下敲入: :%s/^V^M//g 或者,在UNIX SHELL下敲入: sed 's/^V^M//g' foo > foo.new

                         #    sed -i "s/^M//g" `grep "^M" -rl ./`

                        #下面这句好使

                        # sed 's/\r//g' pxa270_buzzer_drv.c >pxa270_buzzer_drv2.c

                        sed 's/\r//g' $chkfile >temp.c

                        mv temp.c $chkfile

                        #echo $chkfile #>> result.txt

                    fi

                fi


                if [[ -d $chkfile ]]

                then

                        eachd $chkfile

                fi

        done

}


#eachd "."


if test -d $1

then

    eachd $1

elif test -f $1

then

    echo "you input a file but not a directory,pls reinput and try again"

    exit 1

else

    echo "the Directory isn't exist which you input,pls input a new one!!"

    exit 1

fi



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


第二步:

[root@localhost Desktop]# ./digui-dir-indent.sh experiment


digui-dir-indent.sh 文件内容如下:



#!/bin/sh


#http://www.wenzizone.cn/?p=313

#晚上没事,用shell写了个递归遍历目录的脚本,本脚本实现递归遍历指定目录,打印目录下的文件名(全路径)。不为别的,就为了以后用着方便。


function scandir() {

    local cur_dir parent_dir workdir

    workdir=$1

    cd ${workdir}

    if [ ${workdir} = "/" ]

    then

        cur_dir=""

    else

        cur_dir=$(pwd)

    fi


    for dirlist in $(ls ${cur_dir})

    do

        if test -d ${dirlist};then

            cd ${dirlist}

            scandir ${cur_dir}/${dirlist}

            cd ..

        else

            #            echo ${cur_dir}/${dirlist}

            indent -npro -kr -i8 -ts8 -sob -l280 -ss -ncs -cp1 *.c *.h

        fi

    done

}


if test -d $1

then

    scandir $1

elif test -f $1

then

    echo "you input a file but not a directory,pls reinput and try again"

    exit 1

else

    echo "the Directory isn't exist which you input,pls input a new one!!"

    exit 1

fi