• 批量改名的shell脚本


    刚开始学习shell脚本,学习时候写过的一些脚本都是以.sh结尾的,于是想去掉这个结尾,写了个脚本,以后用着也方便。

    脚本如下:

    很简单。扫描当前目录,然后符合条件的改名。

    1 #!/bin/bash
    2 for i in *;
    3 do
    4 newname=`echo $i|sed 's/\.sh$//'` #.要转义
    5 if [ $i != $newname ];then
    6 mv $i $newname
    7 fi
    8 done

    补充:

    sed的用法。

    替换:s/regexp/replacement/

    regexp:

      ^锚定行的开始如:/^sed/匹配所有以sed开头的行。 

      $锚定行的结束 如:/sed$/匹配所有以sed结尾的行。

      .匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。 

      *匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。 

      []匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。 

      [^]匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。

      \(..\)保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。

      &;保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。

      \<;锚定单词的开始,如:/\<love/匹配包含以love开头的单词的行。

      \>;锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。

      x\{m\}重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。

      x\{m,\}重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。

      x\{m,n\}重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。

    其他例子:

    1、把它们的名字的第一个1个字母变为"q",其它的不变
     
     for i in `ls`; do mv -f $i `echo $i | sed 's/^./q/'`; done
    或者写个脚本,显得更加清晰:
    for file in `ls`
    do
        newfile =`echo $i | sed 's/^./q/'`
     mv $file $newfile
    done
     
    2、修改前面5个字母为zhaozh
     
     for i in `ls`; do mv -f $i `echo $i | sed 's/^...../zhaozh/'`; done
     
    3、修改后面5个字母为snail
     
     for i in `ls`; do mv -f $i `echo $i | sed 's/.....$/snail/'`; done
     
    4、在前面添加 _hoho_
     
     for i in `ls`; do mv -f $i `echo "_hoho_"$i`; done
     
    5、所有的小写字母变大写字母
     
     for i in `ls`; do mv -f $i `echo $i | tr a-z A-Z`; done

    说到底就是用“for 循环 + 组合命令处理”的思路来实现文件批量重命名滴。

    -------------------------------------------------------------------------------------------------------------------------------------------------
    以上都为原创文章,转载请注明出处。

    我是Yiffy,以下是我的联系方式。
    http://www.cnblogs.com/baizhantang/
    有问题可以联系我,欢迎交流技术。

    By: Yiffy



  • 相关阅读:
    ES6 import、export的写法
    不带分号可能会引起出错的情况
    npm传参技巧
    深度优先遍历和广度优先遍历
    WebGL的shader
    web component
    页面的beforeunload和unload的事件应用
    暴搜
    子集树与排列树
    概率论
  • 原文地址:https://www.cnblogs.com/baizhantang/p/2680613.html
Copyright © 2020-2023  润新知