Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3020523
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-07-06 08:36:55

一个目录下面有很多文件:
TEST_PD02021_TT123.wmv
TEST_PD02021_TT124.wmv
......

要批量实现更名,只要文件名中包含 PD02021 就替换为 HP00863。
  1. ls | sed -n 's/\(.*\)PD02021\(.*\)/mv & \1HP00863\2/e'
[解析]
  ls列出当前目录下的所有文件管道给sed处理,sed匹配到内容后替换成更改的命令然后 e 执行操作。
 
  1. ls *.wmv | awk '/PD02021/{v=gensub("PD02021","HP00863","g");system("mv "$0" "v"")}'
[解析]
  awk可没有sed的 & 变量,所有只有先完成替换后复制给一个变量来储存替换后的值,然后用system()函数来执行更名操作。
 
  1. ls *.wmv|while read line;do echo $line|grep -q "PD02021" && mv $line $(echo $line|sed 's/PD02021/HP00863/');done
[解析]
  这是纯shell的脚本,好长啊。
阅读(2832) | 评论(2) | 转发(2) |
给主人留下些什么吧!~~

network_sina2012-11-22 16:17:13

学习了,非常实用,不过第二个awk最后少了一个单引号

lionfun2011-07-07 12:48:56

学习了