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

前不久有一个需求,一个文件夹下有很多文件,文件名用.号分割,需要编写一个shell脚本,把文件组织成树型文件夹的结构。
组织前:

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 $*

 

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

 

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

上一篇:Photoshop将树林美女图片调成甜美的青褐色


下一篇:Go如何监听Linux系统信号