shell 脚本实现文件批量重命名

#!/bin/bash

function changeName(){

  file=$1 #获取文件名

  extension="${file##*.}" #获取后缀名

  #确定要匹配的后缀名

  A=("gif" "png" "jpg" "json")

  #重新命名文件名

  newfilename=`printf "%04d" $4`

  #判断是否是在匹配的后缀名中

  if [ $(contains "${A[@]}" "$extension") == "y" ]; then

    #重新拼接文件路径

    newpath=$2$3$newfilename"."$extension

    echo $newpath

    #调用move 命令

    mv $file $newpath 

  fi

}

#判断一个元素是否包含在数组当中

#A=("gif" "jpg")

#if [ $(contains "${A[@]}" "gif")

function contains() {

    local n=$#

    local value=${!n}

    for ((i=1;i < $#;i++)) {

        if [ "${!i}" == "${value}" ]; then

            echo "y"

            return 0

        fi

    }

    echo "n"

    return 1

}

#遍历文件夹

function travFolder(){

  echo "遍历开始"

  #打开目标文件夹

  flist=`ls $1`

  cd $1


  #声明文件个数初始值 0

  declare -i j=0

  echo "开始改名字啦"

  #循环所有文件以及文件夹

  for f in $flist

  do

    if test -d $f  #判断是否是文件夹,如果是,遍历

    then

      #递归遍历

      travFolder $f

    else

      j+=1

      #修改文件名

      changeName $f $2 $3 $j

    fi

  done

}

dir=./FBL  #需要重命名的文件所在的文件夹,跟本shell脚本同一级目录

newPath="../New/" #重命名后移动到的目标文件夹

head="T_"

travFolder $dir $newPath $head

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 10,268评论 0 11
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 13,473评论 3 53
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 4,799评论 0 0
  • 0.linux启动的步骤 设备加电----》BIOS自检-----》grub引导启动-----》加载内核----》...
    萌面大叔2阅读 4,181评论 0 1
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 5,472评论 0 0

友情链接更多精彩内容