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



  • 相关阅读:
    CentOS下MySQL忘记root密码解决方法【转载】
    Linux给用户添加sudo权限
    C++11 std::chrono库详解
    npm install Error:EPROTO: protocol error, symlink '../mime/cli.js' -> '/vagrant/src/nodejs/node_modules/express/node_modules/send/node_modules/.bin/mime'
    DOT + graphviz 轻松画图
    关于阿里云ESC上go语言项目编译6l: running gcc failed: Cannot allocate memory
    Ubunu下安装Docker
    Ubunu下安装mongoDB
    Docker私有仓库Registry的搭建验证
    Linux的SOCKET编程详解
  • 原文地址:https://www.cnblogs.com/baizhantang/p/2680613.html
Copyright © 2011-2022 走看看