LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2021|回复: 12

修改某一文件下所有文件的后缀名的shell 程序怎么写

[复制链接]
发表于 2007-7-4 09:31:56 | 显示全部楼层 |阅读模式
我一目录下有很多*.mp3的文件,现在我想把所以文件的后缀由mp3改成wav,这个shell 程序怎么写,谢谢!
发表于 2007-7-4 10:03:51 | 显示全部楼层
单纯为了改扩展名?
你确定你知道改扩展名并不会改变文件本身的数据结构?
回复 支持 反对

使用道具 举报

发表于 2007-7-4 10:27:16 | 显示全部楼层
我有一个比较麻烦的办法:
1.首先得到文件列表:ls >../a(放在上层目录是为了防止对ls结果的干扰,这一步的ls可以换成ls *.mp3或者是其他的条件)
2.然后生成改名后的文件列表:sed -e 's/mp3/wav/g' ../a>../b
3.合并这两个文件:paste ../a ../b >../c
4.加上mv命令:sed -e 's/^/mv\ /g' ../c >../d
举个例子,如果目录下面有1.mp3、2.mp3、3.mp3三个文件,那么:walkerxk@www:~/test$ ls >../a
walkerxk@www:~/test$ cat ../a
1.mp3
2.mp3
3.mp3
walkerxk@www:~/test$ sed -e 's/mp3/wav/g' ../a>../b
walkerxk@www:~/test$ cat ../b
1.wav
2.wav
3.wav
walkerxk@www:~/test$ paste ../a ../b >../c
walkerxk@www:~/test$ cat ../c
1.mp3   1.wav
2.mp3   2.wav
3.mp3   3.wav
walkerxk@www:~/test$ sed -e 's/^/mv\ /g' ../c >../d
walkerxk@www:~/test$ cat ../d
mv 1.mp3        1.wav
mv 2.mp3        2.wav
mv 3.mp3        3.wav
walkerxk@www:~/test$
注意:只是更改后缀并不能改变文件的格式,file的结果还是mp3文件,而且可能导致播放器不能正常播放。
如果想把格式改成wav,你需要lame或者mencoder。
回复 支持 反对

使用道具 举报

发表于 2007-7-4 10:57:13 | 显示全部楼层
for file in *.mp3 ; do prefix=${file%\.mp3}; mv "${prefix}.mp3" "${prefix}.wav" ; done

如果是包含子目录的话

find 目录 -type f -name *.mp3 | (while read file ; do prefix=${file%\.mp3}; mv "${prefix}.mp3" "${prefix}.wav" ; done )
回复 支持 反对

使用道具 举报

发表于 2007-7-4 12:26:28 | 显示全部楼层
如果有 rename 这个命令:
  1. $rename .mp3 .wav *.mp3
复制代码

如果没有:
  1. $for i in *.mp3;do mv $i ${i/%mp3/wav};done
复制代码
回复 支持 反对

使用道具 举报

发表于 2007-7-4 21:25:39 | 显示全部楼层
${i/%mp3/wav}

这种方式更好,直接在变量内替换,不象我写的那个,很繁杂
回复 支持 反对

使用道具 举报

发表于 2007-7-4 23:35:12 | 显示全部楼层
好象没有意义吧,linux对文件类型的识别并不是通过后缀的
回复 支持 反对

使用道具 举报

发表于 2007-7-7 13:18:01 | 显示全部楼层
尝试你们写的,感觉有一定的问题,我也写了一个:
for i in *.mp3
do
  mv  $i  ${i%.*}.wav
done
回复 支持 反对

使用道具 举报

发表于 2007-7-7 18:52:10 | 显示全部楼层
要我选择,我就用sssslang的方法
另外,把 $i 放进双引号!
回复 支持 反对

使用道具 举报

发表于 2007-7-8 22:26:43 | 显示全部楼层
sssslang写的:
$for i in *.mp3;do mv $i ${i/%mp3/wav};done
解释一下{i/%mp3/wav}这个地方,我有点不明白.特别是"/%" 3Q
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表