zoukankan      html  css  js  c++  java
  • bash coding to changeNames

     

    ____通配符和正则表达式

    此处的定义只针对linux 中的shell语言,对其它语言不适用
    _正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
    _通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配
    ___grep 查找文件名时必要时添加 转义符以取消字符所带含义。就算不想应用正则表达式,也是不可能的,因为正则表达式就是字符存在的方式。
    ____取变量值 $变量 或者 ${变量}。 大括号存在的意义是确定了变量名字的界限,与后面跟随的字符区分开
    ____变量的叠加,要用双引号把叠加的内容写在一起,上面的大括号在这里就非常需要
    ____用echo 调试也挺方便,就像printf一样的功能。
    ____for 的格式和 c 类似, 多了一对括号
    ____测试中括号的内侧要有空格,比较的格式,需要时查找文档
    ____名称或变量中带空格得要加上双引号,这一点很容易忘记。想到超老师讲如果已经存在了双引号里面就得用单引号了

    ____ s 在正则表达式中代表空格,如果是简单的应用的话,我觉得直接拷贝for循环比嵌套更方便。因为nyy+p很直接
    #!/bin/bash

    # change all the names of the sub-folders. 
    for((i=1;i<=5;i=i+1))
    do
            cd /home/sophie/temp
            aa=$(ls  | grep "$i")
            echo "$i"
            mv "$aa" $i
    done 

      1 #!/bin/bash
      2 
      3 # change all the names of the sub-folders.  
      4 for((i=1;i<=20;i=i+1))
      5 do
      6         cd /home/sophie/temp/1
      7         aa=$(ls  | grep "${i}_")
      8         echo "$i"
      9         if [ -n "$aa"  ]
     10         then
     11                 mv "$aa" $i
     12         fi
     13 done                                                                                                                                             

    嵌套的文件夹名称修改

    #!/bin/bash 
    # change all the names of the sub-folders.  
    for((i=1;i<=20;i=i+1))
    do
            cd /home/sophie/temp/2
            aa=$(ls  | grep "${i}")
            if [ -n "$aa"  ]
            then
                    echo "$i"
                    mv "$aa" "${i}"

                    cd "$i"
                    pwd
                    for((j=1;j<=20;j=j+1))
                    do
                            bb=$(ls  | grep ".${j}.")
                            echo "$j"
                            if [ -n "$bb"  ]
                            then
                                    mv "$bb"  "$i.${j}.wma"
                            fi
                    done
            fi
    done

    ---------

    for((i=1;i<=20;i=i+1))
    do
            cd /home/sophie/temp/5
            aa=$(ls  | grep "s${i}$")
            if [ -n "$aa"  ]
            then
                    echo "$i"
                    mv "$aa" "${i}"

                    cd "$i"
                    pwd
                    for((j=1;j<=20;j=j+1))
                    do
                            bb=$(ls  | grep "s${j}.")
                            echo "$j"
                            if [ -n "$bb"  ]
                            then
                                    mv "$bb"  "$i.${j}.wma"
                            fi
                    done
            fi 
    done
  • 相关阅读:
    Daily scrum[2013.12.03]
    Daily scrum[2013.12.02]
    gcc编译使用math.h的c程序
    推荐两篇分布式协调算法paxos的文章
    Linux系统如何查看版本信息
    [原]gcc编译器强别名导致的问题
    [转]Linux 在一个命令行上执行多个命令
    [转] Python执行系统命令的方法 os.system(),os.popen(),commands
    [转]Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
    [转]MySQL数据库基准压力测试工具之MySQLSlap使用实例
  • 原文地址:https://www.cnblogs.com/aprilapril/p/5615697.html
Copyright © 2011-2022 走看看