Bash 里面,如何基于现有的、多个有规则的文件名,改之成另外一批有规则的文件名

2015-04-26 22:31:08 +08:00
 Chigogo

>find . -type f -name \*.mkv -print
./[三国演义_第01集_桃园三结义].Romance.Of.The.Three.Kingdoms.1994.EP01.DVDRiP.x264.DualAudio-Whm303.mkv
./[三国演义_第02集_十常侍乱政].Romance.Of.The.Three.Kingdoms.1994.EP02.DVDRiP.x264.DualAudio-Whm303.mkv

改成
第01集-桃园三结义.mkv
第02集-十常侍乱政.mkv
2847 次点击
所在节点    问与答
21 条回复
LazyZhu
2015-04-26 22:37:53 +08:00
Chigogo
2015-04-26 22:42:30 +08:00
@LazyZhu 其实我知道查找,就是不知道如何改名。。捕获组。。。
LazyZhu
2015-04-26 22:45:33 +08:00
上面贴的就是你要的
我可以给你写出你想要的,但以后遇到类似问题你仍然不会,不如自己试着写.
lululau
2015-04-26 22:47:52 +08:00
google下rename, prename 之类的工具
spacewander
2015-04-26 22:52:57 +08:00
name="./[三国演义_第01集_桃园三结义].Romance.Of.The.Three.Kingdoms.1994.EP01.DVDRiP.x264.DualAudio-Whm303.mkv"
name=${name#*_}
echo "${name%]*}.mkv"

大概像这样?
orzfly
2015-04-26 23:42:21 +08:00
jb
2015-04-26 23:50:12 +08:00
感觉直接rename不就好了?
比如有test1.cpp test2.cpp test3.cpp test4.cpp
要改成code1.cpp code2.cpp ... code4.cpp
直接:
$rename test code *
就好了呀
jb
2015-04-26 23:50:52 +08:00
对不起,窝没看到你最后的结果。理解错了。。。
extreme
2015-04-27 00:34:48 +08:00
cd 存放mkv的目录
for i in *.mkv
do
mv ${i} $(echo ${i} | sed -r 's/^\[.*_(.*)_(.*)\].*\.mkv$/\1-\2.mkv/g')
done

其实可以用更简便的rename,不过貌似并非每个发行版本的rename都是正则表达式版本。
rename 's/^\[.*_(.*)_(.*)\].*\.mkv$/$1-$2.mkv/g' *.mkv
extreme
2015-04-27 00:39:40 +08:00
@extreme 除非你也修改正则表达式,否则记得上面的命令的*.mkv不要改成其他的,即使是./*.mkv(把^改成.*吧),如果改了,正则表达式可能就无法匹配了。
LazyZhu
2015-04-27 04:08:12 +08:00
for episode in *.mkv; do
mv ${episode} ${episode:6:4}-${episode:11:5}.mkv
done
# Tested under Debian7.8
Chigogo
2015-04-27 07:28:57 +08:00
@LazyZhu
@extreme
@jb
@spacewander
@lululau
@orzfly

感谢大家的悉心解答,Bash 的工具太多的,刚入门,掌握起来有点痛苦,不过我会努力的!!!谢谢你们提供的资料和方法论。

大家是如何熟用Bash的?
zhigang1992
2015-04-27 07:48:40 +08:00
sublime text,multicursor
ilotuo
2015-04-27 10:00:26 +08:00
搭车求一个有没有专门做正则表达式练习的网站?
Chigogo
2015-04-27 13:11:27 +08:00
@zhigang1992 那个是编辑器,我要的是文件操作。。。
dofine
2015-04-27 13:52:20 +08:00
massren - easily rename multiple files using your text editor https://github.com/laurent22/massren
反正 bash 我是一直没学会。。
orzfly
2015-04-27 14:27:07 +08:00
@Chigogo 如果你非要觉得编辑器不能干文件操作……
https://dl.dropboxusercontent.com/u/225892/rename-with-sublime.mp4

cc @zhigang1992
Chigogo
2015-04-27 19:14:31 +08:00
@orzfly OK,Sublime 太牛逼!
Chigogo
2015-04-27 19:16:13 +08:00
@orzfly 你也是太牛逼,你用什么工具做的。。。。从教程的制作到发布。。。!!!!
Chigogo
2015-04-27 19:18:27 +08:00
@orzfly Dropbox直接支持外链?还是说只能在对应页面访问?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186530

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX