shell脚本之给文件按照扩展名归类

linux

 

#!/bin/bash

#装扩展名的数组
arr_ext=()

ProjPath=`cd $(dirname "$0");pwd`
dirPath="$ProjPath/process"
#包含所有文件的根目录
#echo $dirPath

#创建分类目录
descPath="$ProjPath/desc"
if test -e $descPath
then
        rm -rf $descPath
else
        mkdir $descPath
fi

read_dir(){
        for file in `ls -a $1`
        do
                if [ -d $1"/"$file ]
                then
                        if [[ $file != '.' && $file != '..' ]]
                        then
                                read_dir $1"/"$file
                        fi
                else
                        FILE=$1"/"$file
                        echo ${FILE}
                        #获取文件的扩展名
                        EXT="${FILE##*.}"

                        #判断元素在素组中已经存在
                        isexist=0
                        for var in ${arr_ext[@]}
                        do
                                if [[ $var == $EXT ]]
                                then
                                        isexist=1
                                fi
                        done

                        if [[ $isexist == 0 ]]
                        then
                                #向数组中追加元素
                                arr_ext[${#arr_ext[*]}]=$EXT

                                #创建分类目录
                                mkdir $descPath"/"$EXT
                        fi

                        #拷贝文件到分类目录
                        cp $FILE $descPath"/"$EXT
                        echo -e "拷贝成功!\n"

                fi
        done
}

read_dir $dirPath

#便利数组
for var in ${arr_ext[@]}
do
        echo "扩展名:"$var
done

 

用法:

创建一个名字为process的文件夹,把要分类的文件夹放进去,把脚本放在process同级目录,执行sh classify_file.sh,会生成一个desc目录,里面有各种扩展名的文件夹,文件夹里面装该扩展名的文件

如果发现下载不了或者地址失效,请联系客服QQ: 2323178881
找资料 » shell脚本之给文件按照扩展名归类

提供最优质的资源集合

立即查看 了解详情