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就行了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM