求批量更改文件内指定内容的软件或方法? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
realgreenzb
V2EX    问与答

求批量更改文件内指定内容的软件或方法?

  •  
  •   realgreenzb 2014-06-23 07:40:29 +08:00 5879 次点击
    这是一个创建于 4154 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手上有一堆html文件,大概一千多个。需要把里面所有 “XX公司” 的字样更改为 “XX有限责任公司”。。。不想一个个去处理,求好用的方法或软件。谢谢!
    43 条回复    2014-06-24 21:07:17 +08:00
    crab
        1
    crab  
       2014-06-23 07:43:15 +08:00   1
    Windows的话搜索:文本批量替换工具
    realgreenzb
        2
    realgreenzb  
    OP
       2014-06-23 07:49:04 +08:00
    @crab 试试,谢啦
    anheiyouxia
        3
    anheiyouxia  
       2014-06-23 07:56:08 +08:00 via Android
    Emeditor,但是只有付费版才有,免费版没有,提供30天使用,notepad也有
    smblog
        4
    smblog  
       2014-06-23 08:05:03 +08:00
    SUBLIME TEXT 就可以。。FIND IN FILES
    realgreenzb
        5
    realgreenzb  
    OP
       2014-06-23 08:28:19 +08:00
    @smblog
    @anheiyouxia

    编辑器的确是最直观的,但一下子打开一千多个文件,电脑直接就死了。
    他们可以一次打开十个文件,关闭,然后继续十个十个的替换么?我没找到方法。。。
    smblog
        6
    smblog  
       2014-06-23 08:32:38 +08:00
    @realgreenzb sublime不需要打开文件啊。。
    realgreenzb
        7
    realgreenzb  
    OP
       2014-06-23 08:47:39 +08:00
    @smblog

    FIND IN FILES已测。。sublime直接死了,他还是会打开文件去显示更改结果的。。不能直接几十个或者上千的做文件替换。。
    andrewpsy
        8
    andrewpsy  
       2014-06-23 08:51:15 +08:00
    可以自己写个小程序搞一个BFS(方程大概就叫 ReplaceText(string rootDirectory)吧)每个文件打开替换,不过度工程化的话一百行不到的代码就够了。
    pheyx
        9
    pheyx  
       2014-06-23 08:52:08 +08:00
    cygwin sed
    realgreenzb
        10
    realgreenzb  
    OP
       2014-06-23 08:53:00 +08:00
    @andrewpsy 实在没现成的就只有用python撸一把了。。只是觉得这种事情应该有软件可以做,所以想问问大家
    d0o0g
        11
    d0o0g  
       2014-06-23 08:55:06 +08:00   1
    vim :%s/XX公司/XX有限责任公司/g
    d0o0g
        12
    d0o0g  
       2014-06-23 08:55:45 +08:00
    额,我看错了,以为单个文件
    raincious
        13
    raincious  
       2014-06-23 08:57:56 +08:00 via Android
    @realgreenzb Notepad++,Crt+F => Find in files => Replace in files
    Mutoo
        14
    Mutoo  
       2014-06-23 08:58:07 +08:00
    notepad++ 可以
    jianghu52
        15
    jianghu52  
       2014-06-23 09:00:26 +08:00
    小众软件推荐过一个 http://www.appinn.com/batch-text-replace/。你可以去看看。
    另外我记得tc好像也有这个功能
    realgreenzb
        16
    realgreenzb  
    OP
       2014-06-23 09:01:42 +08:00
    @raincious
    @Mutoo

    貌似用编辑器去做批量替换都会遇到文件量太大,编辑器直接就死掉的问题。而且我还专门把文件全放在ramdisk里,加快读取。16g内存也扛不住。。。估计只能写脚本了。。
    d0o0g
        17
    d0o0g  
       2014-06-23 09:01:53 +08:00
    find ./ -name "*.html" -print0 | xargs -0 sed -i 's/XX公司/XX有限责任公司/g'
    realgreenzb
        18
    realgreenzb  
    OP
       2014-06-23 09:03:03 +08:00
    @jianghu52 链接失效,不过感觉有戏。谢过,试试
    ibolee
        19
    ibolee  
       2014-06-23 09:16:05 +08:00
    lz

    1.看到我打开了多少js文件吗?
    2.看到替换下面的选项是:『替换所有打开的文件』了吗?
    我用的软件是ultra edit,有试用,兼容windows、mac、linux。



    v2ex精神,做好事有图。。。
    anheiyouxia
        20
    anheiyouxia  
       2014-06-23 09:17:00 +08:00 via Android
    @realgreenzb 顶部菜单点击编辑,有个在文件中替换的选项,可以批量替换,你一个个打开替换,让我震惊了
    BTW,支持正则表达式
    mhycy
        21
    mhycy  
       2014-06-23 09:17:41 +08:00
    notepad++的确不错~
    特别是支持正则表达式替换.....
    Epsil0n9
        22
    Epsil0n9  
       2014-06-23 09:20:01 +08:00
    祭出珍藏多年的神器 FileSeek
    realgreenzb
        23
    realgreenzb  
    OP
       2014-06-23 09:31:38 +08:00
    @anheiyouxia 呵呵,口误了。我是想成批成批的替换,1000多个文件,一次打开也不实际。我试过的编辑器的文件内替换功能,基本上都会把文件打开放在那里,不会自动关闭释放,直接就死了。这是个麻烦
    rockagen
        24
    rockagen  
       2014-06-23 09:33:45 +08:00   1
    find . -name '*.html' | xargs -I {} sed -i 's/XX公司/XX有限责任公司/g' {}
    realgreenzb
        25
    realgreenzb  
    OP
       2014-06-23 09:39:42 +08:00
    @ibolee 哈哈,有图什么的是最好的了。谢过
    leefly
        26
    leefly  
       2014-06-23 09:54:03 +08:00
    一千多个可以分开放到几个文件夹里面嘛。
    walleL
        27
    walleL  
       2014-06-23 10:15:18 +08:00
    find -name '*.html' -exec sed -i 's/XX公司/XX有限责任公司/g' {} \;
    walleL
        28
    walleL  
       2014-06-23 10:16:45 +08:00   1
    接楼上
    执行前记得先备份
    em70
        29
    em70  
       2014-06-23 10:18:25 +08:00 via Android
    emeditor编辑器,编辑菜单里有批量查找和批量替换,我经常用,肯定满足你的需求
    anheiyouxia
        30
    anheiyouxia  
       2014-06-23 10:26:30 +08:00 via Android
    @realgreenzb 不知道你是不是哪里搞错了
    以前我经常使用Emeditor的替换功能,还有查找功能,很强劲,效率很高,没有你说的问题
    以前我替换的那些文件没有上千,就几百而已,但是有一半的文件是>=200M的,就是偶尔卡住一下,然后就正常了,卡一下,然后正常了。
    Seans
        31
    Seans  
       2014-06-23 10:27:27 +08:00
    xinhugo
        32
    xinhugo  
       2014-06-23 11:26:13 +08:00
    同13、14、21楼,Windows 平台推荐 Notepad++

    Notepad++ 大法好,天灭记事本。

    右键批量打开所有文件 → CTRL + H → 查找目标「XX公司」 → 替换为「XX有限责任公司」 → 替换所有打开文件
    NetCobra
        33
    NetCobra  
       2014-06-23 11:49:33 +08:00
    SoloCompany
        34
    SoloCompany  
       2014-06-23 13:41:51 +08:00
    JetBrains 大法好,搜易喜
    thisisvoa
        35
    thisisvoa  
       2014-06-23 15:56:59 +08:00
    total command
    jianghu52
        36
    jianghu52  
       2014-06-23 16:03:54 +08:00   1
    @xinhugo [所有打开文件] !!!楼主说了要替换几千个文件,你让他手动打开几千个?
    duolab
        37
    duolab  
       2014-06-23 16:13:23 +08:00
    Total Commander里的CTRL+M批量改名很好用还支持正则,实现些高级的功能。
    xinhugo
        38
    xinhugo  
       2014-06-23 19:57:12 +08:00
    @jianghu52 当时看得不仔细,是我的疏忽。然而,同时选择一千多个文件,右键用 Notepad++ 打开,也没有多困难。
    aa65535
        39
    aa65535  
       2014-06-23 21:12:30 +08:00
    @xinhugo 是“文件查找 - 在文章替换”,根本不需要打开,可以把这个路径下指定的后缀文件全部替换掉。

    其实此类工具很多,命令行还有 wfr 可以用。
    zjgood
        40
    zjgood  
       2014-06-23 21:17:35 +08:00 via Android
    @d0o0g 同赞sed~
    hzlzh
        41
    hzlzh  
    PRO
       2014-06-23 21:46:38 +08:00
    /Applications/IntelliJ IDEA.app
    直接搞定。
    abbatuu
        42
    abbatuu  
       2014-06-23 22:17:44 +08:00
    dreamweaver 然后在编辑-查找与替换,查找范围选择你的网站文件夹,搜索选择源代码,填入查找的与替换的代码,点替换全部。

    不会死机 只是一个批处理而已~
    XXOO
        43
    XXOO  
       2014-06-24 21:07:17 +08:00
    感谢提问者和回答者
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5240 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 07:39 PVG 15:39 LAX 23:39 JFK 02:39
    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