shell脚本遍历文件,根据文件名分隔符自动创建文件夹并放入对应文件

前不久有一个需求,一个文件夹下有很多文件,文件名用.号分割,需要编写一个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 $*

 

保存为xxx.sh文件,在命令行里敲sh xxx.sh就行了。

 

posted @ 2021-07-01 23:32  太阳叔叔  阅读(1277)  评论(0编辑  收藏  举报