zoukankan      html  css  js  c++  java
  • 批量改名的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



  • 相关阅读:
    nowcoderD Xieldy And His Password
    Codeforces681D Gifts by the List
    nowcoder80D applese的生日
    Codeforces961E Tufurama
    Codeforces957 Mahmoud and Ehab and yet another xor task
    nowcoder82E 无向图中的最短距离
    nowcoder82B 区间的连续段
    Codeforces903E Swapping Characters
    Codeforces614C Peter and Snow Blower
    Codeforces614D Skills
  • 原文地址:https://www.cnblogs.com/baizhantang/p/2680613.html
Copyright © 2011-2022 走看看