Chinaunix首页 | 论坛 | 博客
  • 博客访问: 371846
  • 博文数量: 114
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1219
  • 用 户 组: 普通用户
  • 注册时间: 2015-02-07 21:23
文章分类

全部博文(114)

文章存档

2018年(1)

2017年(5)

2016年(87)

2015年(21)

我的朋友

分类: 系统运维

2016-04-10 12:59:45


  1. [准备测试数据]
    [root@oldboy ]# cat a.txt 
    stu_102999_1_finished.jpg
    stu_102999_2_finished.jpg 
    stu_102999_3_finished.jpg 
    stu_102999_4_finished.jpg 
    stu_102999_5_finished.jpg
    [root@oldboy oldboy]#  cat a.txt |tr "\n" " "
    用tr做一个替换,每一行用空格分隔
    [root@oldboy oldboy]#  touch oldboy
    [root@oldboy oldboy]#  touch 'cat a.txt|tr "\n" " "'
    用touch创建文件,用反引号引起来
    [root@oldboy oldboy]#  mv stu_102999_* oldboy/


  2. 方法1:shell脚本for循环结合sed实现
  3. [检查数据]
  4. [root@oldboy oldboy]# ll
  5. total 4
  6. -rw-r--r-- 1 root root 85 Oct 2 12:54 oldboy_modi_file.sh
  7. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_1_finished.jpg
  8. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_2_finished.jpg
  9. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_3_finished.jpg
  10. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_4_finished.jpg
  11. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_5_finished.jpg

  12. [开发脚本]
  13. [root@oldboy oldboy]# cat oldboy_modi_file.sh
  14. #!/bin/sh
  15. for file in `ls ./*.jpg`
  16. #shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名
  17. do
  18. mv $file `echo $file|sed 's/finished//g'`
  19. #使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。
  20. done
  21. #特别提示:通过本题,可以学习到for循环的使用,及mv、sed等命令的使用

  22. [执行脚本]
  23. [root@oldboy oldboy]# sh oldboy_modi_file.sh

  24. [检查结果]
  25. [root@oldboy oldboy]# ll
  26. total 4
  27. -rw-r--r-- 1 root root 85 Oct 2 12:54 oldboy_modi_file.sh
  28. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_1_.jpg
  29. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_2_.jpg
  30. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_3_.jpg
  31. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_4_.jpg
  32. -rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_5_.jpg

  33. 方法二:shell脚本for循环加变量的部分截取方法
  34. [root@oldboy oldboy]#rm -rf stu_102999*
  35. [root@oldboy oldboy]# mv stu_102999_* oldboy/

  36. [root@oldboy oldboy]#ls -l
  37. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_1_finished.jpg
  38. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_2_finished.jpg
  39. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_3_finished.jpg
  40. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_4_finished.jpg
  41. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_5_finished.jpg
  42. [root@oldboy oldboy]#cat change_file_name.sh
  43. #!/bin/sh
  44. # oldboy QQ:31333741
  45. for file in `ls ./*.jpg`
  46.  do
  47. /bin/mv $file `echo "${file%finished*}.jpg"` #这里就是变量的截取新方法,在老男孩的shell编程课程中会讲到此用法。
  48. done
  49. [root@oldboy oldboy]#sh change_file_name.sh
  50. [root@oldboy oldboy]#ls -l
  51. total 4
  52. -rw-r--r-- 1 root root 114 Nov 14 00:21 change_file_name.sh
  53. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_1_.jpg
  54. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_2_.jpg
  55. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_3_.jpg
  56. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_4_.jpg
  57. -rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_5_.jpg
  58. 特别提示:本脚本和文件在同一目录

  59. 方法三:ls结合awk实现
  60. [root@oldboy oldboy]#rm -rf stu_102999*
  61. [root@oldboy oldboy]# mv stu_102999_* oldboy/
  62. [root@oldboy oldboy]# ll
  63. total 0
  64. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_finished.jpg
  65. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_finished.jpg
  66. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_finished.jpg
  67. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_finished.jpg
  68. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_finished.jpg
  69. [root@oldboy oldboy]# ls |awk -F 'finished' '{print $0}'
  70. stu_102999_1_finished.jpg
  71. stu_102999_2_finished.jpg
  72. stu_102999_3_finished.jpg
  73. stu_102999_4_finished.jpg
  74. stu_102999_5_finished.jpg
  75. [root@oldboy oldboy]# ls |awk -F 'finished' '{print $1}'
  76. stu_102999_1_
  77. stu_102999_2_
  78. stu_102999_3_
  79. stu_102999_4_
  80. stu_102999_5_
  81. [root@oldboy oldboy]# ls |awk -F 'finished' '{print $2}'
  82. .jpg
  83. .jpg
  84. .jpg
  85. .jpg
  86. .jpg
  87. [root@oldboy oldboy]# ls |awk -F 'finished' '{print $1$2}'
  88. stu_102999_1_.jpg
  89. stu_102999_2_.jpg
  90. stu_102999_3_.jpg
  91. stu_102999_4_.jpg
  92. stu_102999_5_.jpg
  93. [root@oldboy oldboy]# ls |awk -F 'finished' '{print "mv "$0" "$1$2" "}'|/bin/bash
  94. [root@oldboy oldboy]# ll
  95. total 0
  96. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_.jpg
  97. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_.jpg
  98. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_.jpg
  99. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_.jpg
  100. -rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_.jpg
  101. 方法四:通过专业的改名命令rename实现
  102. rename 格式
  103. rename from to file....(from 改的内容 to 改成什么 file 对什么文件修改)

  104. [root@oldboy oldboy]#rm -rf stu_102999*
  105. [root@oldboy oldboy]# mv stu_102999_* oldboy/
  106. [root@oldboy oldboy]# ll
  107. total 0
  108. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_finished.jpg
  109. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_finished.jpg
  110. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_finished.jpg
  111. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_finished.jpg
  112. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_finished.jpg
  113. [root@oldboy oldboy]# rename "finished" "" * ==>执行批量改名
  114. [root@oldboy oldboy]# ll
  115. total 0
  116. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.jpg
  117. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.jpg
  118. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.jpg
  119. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.jpg
  120. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.jpg
  121. 拓展下:改扩展名的方法
  122. [root@oldboy oldboy]# rename .jpg .oldboy *
  123. [root@oldboy oldboy]# ll
  124. total 0
  125. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.oldboy
  126. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.oldboy
  127. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.oldboy
  128. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.oldboy
  129. -rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.oldboy


阅读(1153) | 评论(0) | 转发(0) |
0

上一篇:linux运维面试题

下一篇:sed命令详解

给主人留下些什么吧!~~