Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103643869
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-05-03 10:38:56

如果我想把当前目录下的所有扩展名为 cpp 的文件,改成扩展名为 c 的文件,要怎么办? 用 shell 编程可以很容易的解决这个问题:

  1. #!/bin/bash
  2. for old in *.cpp
  3. do
  4.     mv $old `basename $old .cpp`.c
  5. done

特别解释一下第4行的 basename 这个命令,basename 返回文件完整路径中的文件名部分,例如: 

# basename /home/galeki/html/index.html
index.html

你也可以在参数中给出文件的扩展名,这样 basename 只会返回文件名除去扩展名的部分:

# basename /home/galeki/html/index.html  .html
index

 也可以把上面的程序修改一下,让它可以根据参数处理不同的扩展名:

  1. #!/bin/bash
  2. for old in *.$1
  3. do
  4.     mv $old `basename $old .$1`.$2
  5. done

 把上面这段代码存成 rn ( rename 的缩写 ),如果你想把当前目录下的所有文件的扩展名从 jpg 改成 png ,那么,只要执行: rn  jpg  png ,即可。

阅读(557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~