[问题]怎样批量改后缀名?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
Jianying
帖子: 70
注册时间: 2007-05-06 23:35
联系:

[问题]怎样批量改后缀名?

#1

帖子 Jianying » 2007-07-01 10:04

比如,想把一个目录下所有的.cpp文件改成.cc文件
$mv *.cpp *.cc
不行,不知道应该加什么参数?

thanks a lot
CPU AMD Athlon 64 X2 3600+
主板 升技AN52
内存 DDR2 667 1GB
显卡 小影霸 Nvidia GeForce 7300 GT 256M
硬盘 ST380021A 80GB
OS Ubuntu 7.04

#I believe I can fly!
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#2

帖子 BigSnake.NET » 2007-07-01 10:12

find -name '*.cpp' | perl -p -e 's/(^.*)(.cpp$)/\1/g'|while read i ; do mv "${i}.cpp" "${i}.cc"; done
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
Jianying
帖子: 70
注册时间: 2007-05-06 23:35
联系:

#3

帖子 Jianying » 2007-07-01 10:32

done! thank u!
btw: mv不行吗?
CPU AMD Athlon 64 X2 3600+
主板 升技AN52
内存 DDR2 667 1GB
显卡 小影霸 Nvidia GeForce 7300 GT 256M
硬盘 ST380021A 80GB
OS Ubuntu 7.04

#I believe I can fly!
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

#4

帖子 xhy » 2007-07-01 12:25

rename .cpp .cc *.cpp
目前负债150多万
头像
kongmen
帖子: 44
注册时间: 2007-06-25 16:44
来自: 广西柳州

#5

帖子 kongmen » 2007-07-01 12:44

:twisted: :twisted: :twisted: :twisted:

学习了
图片

linux菜鸟,多搜索,多交流。

通讯:Eva
翻译:星际译王
输入:Fcitx
音频:Audacious
视频:Mplayer
。。。。学习中
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#6

帖子 eexpress » 2007-07-01 22:25

那秋猫似乎有些乱搞。
● 鸣学
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#7

帖子 BigSnake.NET » 2007-07-01 22:34

eexpress 写了:那秋猫似乎有些乱搞。
没有乱搞啊~...那个命令一般情况下都是好的
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#8

帖子 eexpress » 2007-07-01 22:43

find里面还带perl,不会bash的啊。
你不知道renam本身就是支持prelexpr吧。 :lol:
那find的要iname。要不CPP的都死掉哦。
● 鸣学
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#9

帖子 BigSnake.NET » 2007-07-01 22:50

eexpress 写了:find里面还带perl,不会bash的啊。
你不知道renam本身就是支持prelexpr吧。 :lol:
那find的要iname。要不CPP的都死掉哦。
perl提取扩展名前的部分

一时间忘记了rename啊.. :P

他说cpp啊..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#10

帖子 eexpress » 2007-07-01 22:58

i="skdjf.cpp"; echo ${i%pp}c
bash处理字符串可容易多了。 :lol:
● 鸣学
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#11

帖子 BigSnake.NET » 2007-07-01 23:01

代码: 全选

       ${parameter%word}
       ${parameter%%word}
              The  word  is  expanded to produce a pattern just as in pathname
              expansion.  If the pattern matches a  trailing  portion  of  the
              expanded value of parameter, then the result of the expansion is
              the expanded value of parameter with the shortest matching  pat‐
              tern  (the  ‘‘%’’  case)  or  the  longest matching pattern (the
              ‘‘%%’’ case) deleted.  If parameter  is  @  or  *,  the  pattern
              removal  operation  is  applied  to each positional parameter in
              turn, and the expansion is the resultant list.  If parameter  is
              an  array  variable subscripted with @ or *, the pattern removal
              operation is applied to each member of the array  in  turn,  and
              the expansion is the resultant list.
第一次发现哦..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
回复