Shell脚本文件/文件夹及内容操作范例

前段时间Solr项目写了一个shell脚本进行文件/文件夹以及其中内容的匹配和替换操作。目前已全改为java执行了,这段代码被弃用,不过值得留下为以后其他shell脚本开发是参考:

  1. #!/bin/bash   
  2. #auther:Jacob Xu 20130811, create for Solr master indexing   
  3. echo “====================== choose the configure for user! ====================”  
  4. solrToolPath=/home/jacoxu/solrProject/solrTools/   
  5. creatIndexFolder=1   
  6. replaceSchame=0   
  7. replaceMasterConf=1   
  8. replaceSlaveConf=0   
  9. generateCoreMap=0   
  10. generateSolrXml=1   
  11.   
  12. ################## configure the index folder for user!###################   
  13. rawFolder=$solrToolPath“collection1970_01_1″  
  14. destFolder=/home/jacoxu/solrProject/solrHome_NormSMS/multicore/   
  15. startDate=201001   
  16. endDate=201412   
  17. coreChildren=( 1 2 3 )   
  18. conf=conf   
  19. prefixPath=collection   
  20. ########## configure the path of replaced schame.xml for user!###########   
  21. schema=schema.xml   
  22. rawSchema=$solrToolPath$schema  
  23. ######## configure the path of replaced solrconfig.xml for solr!#########   
  24. solrconfig=solrconfig.xml   
  25. rawSolrconfigMaster=$solrToolPath“solrconfigMaster.xml”  
  26. rawSolrconfigSlave=$solrToolPath“solrconfigSlave.xml”  
  27. oldServerIP=“127.0.0.1:8080/solr/core1970_01_1/”  
  28. newServerIPPrefix=“localhost:8080/solr/core”  
  29. #################### configure solr core map for solr!####################   
  30. solrCoreMap=solrCore_norm.map  
  31. ####################### configure solr.xml for solr!######################   
  32. solrXmlPattern1=“<core name=\”core”  
  33. solrXmlPattern2=“\” instanceDir=\”multicore/collection”  
  34. solrXmlPattern3=“\” loadOnStartup=\”false\” transient=\”true\” />”  
  35. solrXml=solr_norm.xml   
  36. echo $solrXmlPattern  
  37. #########################################################################   
  38.   
  39. if [ $creatIndexFolder -gt 0 ]   
  40. then   
  41.     echo “============== first clean dest datafolder! ============”  
  42.     if [ -d "$destFolder" ]   
  43.     then   
  44.         echo “are you sure to clear the folder?:”${destFolder}   
  45.         echo -n “[Y]es or [N]o? ”  
  46.         read ANS   
  47.         case $ANS in    
  48.         y|Y|yes|Yes)   
  49.             echo “remove ”${destFolder}   
  50.         rm -rf ${destFolder}   
  51.         mkdir “$destFolder”  
  52.         ;;   
  53.       n|N|no|No)   
  54.         echo “####### hasn’t changed anything, exit 0  #######”  
  55.         exit 0   
  56.         ;;   
  57.         *)   
  58.         echo  “#### Warning:please put in again: [Y]es or [N]o? ####”  
  59.             read ANS   
  60.                 case $ANS in    
  61.                 y|Y|yes|Yes)   
  62.                     echo “remove ”${destFolder}   
  63.                 rm -rf ${destFolder}   
  64.                 mkdir “$destFolder”  
  65.                 ;;   
  66.             n|N|no|No)   
  67.                 echo “####### hasn’t changed anything, exit 0  #######”  
  68.                 exit 0   
  69.                 ;;   
  70.             *)   
  71.             echo  “#### error: not match [Y]es or [N]o! ####”  
  72.             exit 0   
  73.             ;;   
  74.             esac   
  75.         ;;   
  76.         esac   
  77.     else  
  78.         mkdir “$destFolder”  
  79.     fi   
  80.     echo “============ start to create new datafolder! ===========”  
  81.     for((j=0; j<${#coreChildren[*]}; j++))   
  82.     do  
  83.         cp -rf $rawFolder ${destFolder}${prefixPath}“0000_00_”${coreChildren[$j]}   
  84.         if [ $generateSolrXml -gt 0 ]   
  85.         then   
  86.         echo ${solrXmlPattern1}“0000_00_”${coreChildren[$j]}${solrXmlPattern2}“0000_00_”${coreChildren[$j]}${solrXmlPattern3} >> $solrXml  
  87.         fi   
  88.     done   
  89.     if [ $generateCoreMap -gt 0 ]   
  90.     then   
  91.     echo “coreChildrenNum=”${#coreChildren[*]} >> $solrCoreMap   
  92.     fi   
  93.     while [ $startDate -le $endDate ]   
  94.     do  
  95.         if [ ${startDate:4:6} -lt 10 ]   
  96.         then   
  97.             regNum=${startDate:5:6}   
  98.         else  
  99.             regNum=${startDate:4:6}   
  100.         fi   
  101.         i=$regNum  
  102.         for(( i; i<=12;i++))   
  103.         do  
  104.             if [ $i -lt 10 ]   
  105.             then   
  106.                 regNum=“0″“$i”  
  107.             else  
  108.                 regNum=$i  
  109.             fi   
  110.             tmpDestFolder=${destFolder}${prefixPath}${startDate:0:4}“_”${regNum}   
  111.             for((j=0; j<${#coreChildren[*]}; j++))   
  112.             do  
  113.                 instanceFolder=“$tmpDestFolder”“_”${coreChildren[$j]}   
  114.                 echo $instanceFolder  
  115.                 if [ $generateCoreMap -gt 0 ]   
  116.                 then   
  117.                     echo “core”${startDate:0:4}“_”${regNum}“_”${coreChildren[$j]}“=”${instanceFolder} >> $solrCoreMap  
  118.                 fi   
  119.                 cp -rf $rawFolder $instanceFolder  
  120.                 if [ $generateSolrXml -gt 0 ]   
  121.                 then   
  122.                 solrXmlP=${startDate:0:4}“_”${regNum}“_”${coreChildren[$j]}   
  123.                 echo ${solrXmlPattern1}${solrXmlP}${solrXmlPattern2}${solrXmlP}${solrXmlPattern3} >> $solrXml  
  124.                 fi   
  125.             done   
  126.             startDate=$[ $startDate + 1 ]   
  127.             if [ $startDate -gt $endDate ]   
  128.             then   
  129.             break   
  130.             fi         
  131.         done   
  132.         startDate=$[ $startDate + 88 ]   
  133.     done   
  134.     echo “============ has created the all datafolder! =============”  
  135. fi   
  136.   
  137. if [ $replaceSchame -gt 0 ]   
  138. then   
  139.     echo “============== start to replace the schema  ===============”  
  140.     if [ ! -f "$rawSchema" ]   
  141.     then   
  142.         echo “#### can’t find the raw file:schema.xml, exit 0  #####”  
  143.         exit 0   
  144.     fi   
  145.     cd $destFolder  
  146.     ls -d collection*/ | (while  
  147.     read line;   
  148.     do  
  149.         tmpSchemaPath=${destFolder}${line}${conf}“/”${schema}   
  150.         if [ -f "$tmpSchemaPath" ]   
  151.         then   
  152.             echo “remove the schema file: ”${tmpSchemaPath}   
  153.             rm “$tmpSchemaPath”    
  154.         fi   
  155.         echo “copy the schema file: ”${tmpSchemaPath}   
  156.         cp “$rawSchema” “$tmpSchemaPath”  
  157.     done)   
  158.     echo “=============== has replaced the schema ==================”  
  159. fi   
  160.   
  161. if [ $replaceMasterConf -gt 0 ]   
  162. then   
  163.     echo “=========== start to replace the solrconfig of master ============”  
  164.     if [ ! -f "$rawSolrconfigMaster" ]   
  165.     then   
  166.         echo “#### can’t find the raw file:solrconfig.xml, exit 0  #####”  
  167.         exit 0   
  168.     fi   
  169.     cd $destFolder  
  170.     ls -d collection*/ | (while  
  171.     read line;   
  172.     do  
  173.         tmpSolrconfigPath=${destFolder}${line}${conf}“/”${solrconfig}   
  174.         if [ -f "$tmpSolrconfigPath" ]   
  175.         then   
  176.             echo “remove the solrconfig file: ”${tmpSolrconfigPath}   
  177.             rm “$tmpSolrconfigPath”    
  178.         fi   
  179.         echo “copy the solrconfig file: ”${rawSolrconfigMaster}   
  180.         cp “$rawSolrconfigMaster” “$tmpSolrconfigPath”  
  181.     done)   
  182.     echo “=============== has replaced the solrconfig of master ==================”  
  183. fi   
  184.   
  185.   
  186. if [ $replaceSlaveConf -gt 0 ]   
  187. then   
  188.     echo “=========== start to replace the solrconfig of slave ============”  
  189.     if [ ! -f "$rawSolrconfigSlave" ]   
  190.     then   
  191.         echo “#### can’t find the raw file:solrconfig.xml, exit 0  #####”  
  192.         exit 0   
  193.     fi   
  194.     cd $destFolder  
  195.     ls -d collection*/ | (while  
  196.     read line;   
  197.     do  
  198.         tmpSolrconfigPath=${destFolder}${line}${conf}“/”${solrconfig}   
  199.         if [ -f "$tmpSolrconfigPath" ]   
  200.         then   
  201.             echo “remove the solrconfig file: ”${tmpSolrconfigPath}   
  202.             rm “$tmpSolrconfigPath”    
  203.         fi   
  204.         echo “copy the solrconfig file: ”${rawSolrconfigSlave}   
  205.         cp “$rawSolrconfigSlave” “$tmpSolrconfigPath”  
  206.         newServerIP=${newServerIPPrefix}${line:10:19}   
  207.         echo $newServerIP  
  208.         echo “has changed the file:”${tmpSolrconfigPath}“:”${oldServerIP}“ to ”${newServerIP}   
  209. #       cd ${destFolder}${line}${conf}   
  210.         sed -i “s#${oldServerIP}#${newServerIP}#g” $tmpSolrconfigPath  
  211.     done)   
  212.     echo “=============== has replaced the solrconfig of slave ==================”  
  213. fi   

再附一个简单的,功能:
rank = 1
base = 5
${fold}/round_3_ins/part-00***-A.gz ***是从000-999
希望过滤一遍,***除5余1的文件,执行
hadoop dfs -get ${fold}/path/part-00***-A.gz

  1. #!/bin/bash   
  2. #auther:Jacob Xu 20140417   
  3. rank=1   
  4. base=5   
  5. fold=/home/just4test   
  6. for((j=0; j<=999; j++))   
  7. do  
  8.     if [ $j -lt 10 ]   
  9.     then   
  10.         tmpDestFile=${fold}“/round_3_ins/part-0000″${j}   
  11.         echo $tmpDestFile  
  12.     elif [ $j -lt 100 ]   
  13.     then   
  14.         tmpDestFile=${fold}“/round_3_ins/part-000″${j}   
  15.         echo $tmpDestFile  
  16.     else  
  17.         tmpDestFile=${fold}“/round_3_ins/part-00″${j}   
  18.         echo $tmpDestFile          
  19.     fi   
  20.     if [ $[j%$base] -eq $rank ]   
  21.     then   
  22.         hadoop dfs -get $tmpDestFile  
  23.         echo “hadoop dfs -get ”${tmpDestFile}   
  24.     fi   
  25. done  

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>