LinuxSir.cn,穿越时空的Linuxsir!

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

请教find 的用法[已解决]

[复制链接]
发表于 2004-2-15 04:31:02 | 显示全部楼层 |阅读模式
% ls
1.wav.txt 2.wav.txt 3.wav.txt

我的目的是把所有的.wav换成.ogg,即1.ogg.txt .......

find ./ -regex ".*.\.wav\..*" -ok mv '{}' $(echo '{}'| sed 's/wav/goo/g') ';'

其中 find ./ -regex ".*.\.wav\..*"能够找到所有的.wav.txt文件
echo "1.wav.txt" | sed 's/wav/goo/g'

也可以输出1.ogg.txt

但是何在一起就是不对啊

find ./ -regex ".*.\.wav\..*" -ok mv '{}' $(echo '{}'| sed 's/wav/goo/g') ';'
"mv .//1.wav.txt .//1.wav.txt"?

请教大家,问题出在那里啊?

另外,请问那里有脚本可以支持re 的文件换名啊?
谢谢
发表于 2004-2-15 10:53:42 | 显示全部楼层
没这么复杂吧~
  1. for i in $(find -name "*.wav.txt" 2>/dev/null);do
  2.         mv $i $(echo $i|sed s/wav/ogg/);
  3. done
复制代码
发表于 2004-2-16 19:16:54 | 显示全部楼层
试试 rename 吧
发表于 2004-2-16 21:34:21 | 显示全部楼层
最初由 dearvoid 发表
试试 rename 吧

呵呵~~~,欢迎dearvoid兄来小版指导~:thank
btw:rename在linux里好像是没有这个命令的哟~ ;)
 楼主| 发表于 2004-2-16 22:06:04 | 显示全部楼层
用find的exec,而不用for,不就是为了减小系统的开销吗?
主要是想研究一下如何在rename的时候,使用RE阿。
javalee的方法和偶的差不多,可惜$i能够正确的输出文件名,
{}就是不行。郁闷。
 楼主| 发表于 2004-2-16 22:08:47 | 显示全部楼层
rename是有的。
Fedora Core 1
发表于 2004-2-16 22:32:01 | 显示全部楼层
find下的exec是有很多限制的,说实话,你的问题我也不知道咋弄:p:sorry,好像得用xargs,rename这个命令在rpmfind.net上可以找到~
发表于 2004-2-17 08:53:19 | 显示全部楼层
我的系统是 redhat 8, 在 util-linux 的 rpm 包中有 rename 命令
 楼主| 发表于 2004-2-18 05:13:03 | 显示全部楼层
谢谢javalee的帮助
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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