前不久有一个需求,一个文件夹下有很多文件,文件名用.号分割,需要编写一个shell脚本,把文件组织成树型文件夹的结构。
组织前:
组织后:
查了不少资料终于完成,代码如下:
#!/bin/sh #创建目录 function CreateDir { _path="$2$1" if [ ! -d $_path ] then mkdir -p $_path fi } #文件拷贝 function MoveFile { mv $1 $2 } #主函数:根据文件名自动创建目录结构 function main { home="markdown" for file in `ls $home/` do # 根据文件名创建文件夹并移动文件 dotNum=`echo $file|grep -o "\."|wc -l` extension="" fileName="" path="" if [ $dotNum -eq 0 ] then extension="" fileName=$file path="" elif [ $dotNum -eq 1 ] then extension=${file##*.} fileName=${file%.*} path="" else extension=${file##*.} wholeName=${file%.*} fileName=${wholeName##*.} path=${wholeName%.*} fi path="${path//.//}" # echo "路径=$path 文件名=$fileName 后缀名=${extension}" CreateDir $path "$home/" if [ -n "$path" ] then MoveFile "$home/$file" "$home/$path/$fileName.$extension" fi done } #调用入口 main $*
保存为sh文件,在命令行里敲sh xxx.sh就行了,