Bash 里面,如何基于现有的、多个有规则的文件名,改之成另外一批有规则的文件名 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Chigogo
V2EX    问与答

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

  •  
  •   Chigogo 2015-04-26 22:31:08 +08:00 3221 次点击
    这是一个创建于 3825 天前的主题,其中的信息可能已经有所发展或是发生改变。

    >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
    21 条回复    2015-04-27 19:25:22 +08:00
    Chigogo
        2
    Chigogo  
    OP
       2015-04-26 22:42:30 +08:00
    @LazyZhu 其实我知道查找,就是不知道如何改名。。捕获组。。。
    LazyZhu
        3
    LazyZhu  
       2015-04-26 22:45:33 +08:00
    上面贴的就是你要的
    我可以给你写出你想要的,但以后遇到类似问题你仍然不会,不如自己试着写.
    lululau
        4
    lululau  
       2015-04-26 22:47:52 +08:00
    google下rename, prename 之类的工具
    spacewander
        5
    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
        6
    orzfly  
       2015-04-26 23:42:21 +08:00
    jb
        7
    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
        8
    jb  
       2015-04-26 23:50:52 +08:00
    对不起,窝没看到你最后的结果。理解错了。。。
    extreme
        9
    extreme  
       2015-04-27 00:34:48 +08:00   1
    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
        10
    extreme  
       2015-04-27 00:39:40 +08:00
    @extreme 除非你也修改正则表达式,否则记得上面的命令的*.mkv不要改成其他的,即使是./*.mkv(把^改成.*吧),如果改了,正则表达式可能就无法匹配了。
    LazyZhu
        11
    LazyZhu  
       2015-04-27 04:08:12 +08:00   1
    for episode in *.mkv; do
    mv ${episode} ${episode:6:4}-${episode:11:5}.mkv
    done
    # Tested under Debian7.8
    Chigogo
        12
    Chigogo  
    OP
       2015-04-27 07:28:57 +08:00
    @LazyZhu
    @extreme
    @jb
    @spacewander
    @lululau
    @orzfly

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

    大家是如何熟用Bash的?
    zhigang1992
        13
    zhigang1992  
       2015-04-27 07:48:40 +08:00 via iPad
    sublime text,multicursor
    ilotuo
        14
    ilotuo  
       2015-04-27 10:00:26 +08:00 via Android
    搭车求一个有没有专门做正则表达式练习的网站?
    Chigogo
        15
    Chigogo  
    OP
       2015-04-27 13:11:27 +08:00
    @zhigang1992 那个是编辑器,我要的是文件操作。。。
    dofine
        16
    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
        17
    orzfly  
       2015-04-27 14:27:07 +08:00
    @Chigogo 如果你非要觉得编辑器不能干文件操作……
    https://dl.dropboxusercontent.com/u/225892/rename-with-sublime.mp4

    cc @zhigang1992
    Chigogo
        18
    Chigogo  
    OP
       2015-04-27 19:14:31 +08:00
    @orzfly OK,Sublime 太牛逼!
    Chigogo
        19
    Chigogo  
    OP
       2015-04-27 19:16:13 +08:00
    @orzfly 你也是太牛逼,你用什么工具做的。。。。从教程的制作到发布。。。!!!!
    Chigogo
        20
    Chigogo  
    OP
       2015-04-27 19:18:27 +08:00
    @orzfly Dropbox直接支持外链?还是说只能在对应页面访问?
    vimutt
        21
    vimutt  
       2015-04-27 19:25:22 +08:00
    acdsee 批量重命名可以搞定 哈哈 这个太弱了哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1219 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 23:36 PVG 07:36 LAX 16:36 JFK 19:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86