V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
realgreenzb
V2EX  ›  问与答

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

  •  
  •   realgreenzb · 2014-06-23 07:40:29 +08:00 · 5411 次点击
    这是一个创建于 3791 天前的主题,其中的信息可能已经有所发展或是发生改变。
    手上有一堆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  
       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   ·   实用小工具   ·   2742 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:00 · PVG 20:00 · LAX 04:00 · JFK 07:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.