阅读 175

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

 

原文:https://www.cnblogs.com/suncleblog/p/14961414.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐