【功能】

按指定的目录查找出文件,如果有子目录,子目录也将进行搜索,将其中的文件内容进行替换。

【缺陷】

1. 没有过滤出文本文件

2. 当文件过大时,效率不高

【代码】

package main

import (
"flag"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
) type ReplaceHelper struct {
Root string //根目录
OldText string //需要替换的文本
NewText string //新的文本
} func (h *ReplaceHelper) DoWrok() error { return filepath.Walk(h.Root, h.walkCallback) } func (h ReplaceHelper) walkCallback(path string, f os.FileInfo, err error) error { if err != nil {
return err
}
if f == nil {
return nil
}
if f.IsDir() {
//fmt.Pringln("DIR:",path)
return nil
} //文件类型需要进行过滤 buf, err := ioutil.ReadFile(path)
if err != nil {
//err
return err
}
content := string(buf) //替换
newContent := strings.Replace(content, h.OldText, h.NewText, -1) //重新写入
ioutil.WriteFile(path, []byte(newContent), 0) return err
} func main() { flag.Parse()
helper := ReplaceHelper{
Root: flag.Arg(0),
OldText: flag.Arg(1),
NewText: flag.Arg(2),
}
err := helper.DoWrok()
if err == nil {
fmt.Println("done!")
} else {
fmt.Println("error:", err.Error())
}
}

  

Go实现查找目录下(包括子目录)替换文件内容的更多相关文章

  1. shell获取目录下(包括子目录)所有文件名、路径、文件大小

    一例shell脚本:取得目录下(包括子目录)所有文件名.路径与文件大小. 代码,shell脚本: lsdir.sh #!/bin/bash # #site: www.jquerycn.cn funct ...

  2. java 提取目录下所有子目录的文件到指定位置

    package folder; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExcept ...

  3. Python 遍历目录下的子目录和文件

    import os A: 遍历目录下的子目录和文件 for root,dirs ,files in os.walk(path) root:要访问的路径名 dirs:遍历目录下的子目录 files:遍历 ...

  4. linux下sed批量替换文件内容

    在linux超级终端下编辑文档是件比较麻烦的事情,下面简单介绍一下如何在linux下批量替换文件内容 linuxsed 批量替换多个文件中的字符串 格式: sed -i "s/查找字段/替换 ...

  5. copy指定目录下包括子目录中所有的文件

    #include <windows.h> #include <iostream> #include <string> using namespace std; DW ...

  6. Linux 查找目录下大于*M的文件

    1. 查找指定文件夹下等于1M的文件 find ./ -size 1M | wc -l 2. 查找指定文件夹下大于1M的文件 find ./target_path -size +1M | wc -l

  7. shell编程: 获得目录下(包括子目录)所有文件名,路径和文件大小

    转自:http://blog.chinaunix.net/uid-26000296-id-3575475.html function ergodic(){ ` do "/"$fil ...

  8. os.walk模块查找目录下的所有txt文件

  9. [转载] linux查找目录下的所有文件中是否含有某个字符串

    链接自 http://blog.sina.com.cn/s/blog_691a84f301015khx.html,并略加修订. 查找目录下的所有文件中是否含有某个字符串 find .|xargs gr ...

随机推荐

  1. jQuery中ajax的使用与缓存问题的解决方法

    http://www.jb51.net/article/44620.htm —————————————————————————————————————————————————————————————— ...

  2. Yarn概述

    转自:http://liujiacai.net/blog/2014/09/07/yarn-intro/ Yarn是随着hadoop发展而催生的新框架,全称是Yet Another Resource N ...

  3. Ubuntu Python 安装numpy SciPy、MatPlotLib环境

    安装 sudo apt-get install python-scipysudo apt-get install python-numpysudo apt-get install python-mat ...

  4. XML 是一种元语言, 可以用它来描述其他语言。

    A.正确 B.错误 解答:B XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup L ...

  5. 【BZOJ】1057: [ZJOI2007]棋盘制作(单调栈)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1057 同某一题差不多?记不清是哪题了.. 就是每一行进行单调栈维护递增的高度,在进栈和出栈维护一下长 ...

  6. 微软ASP.NET网站部署指南(8):部署Code-Only更新

    1.  综述 初始化部署以后,你须要继续维护和更新你的网站.本章节将向你展示一个不包含数据库改变的部署升级流程.(下一章节将展示数据库改变的部署升级流程.) 提醒:假设依据本章节所做的操作出现错误信息 ...

  7. ES插件elasticsearch-mapper-attachments 2.3.4及各个版本正确下载地址

    ES版本更新那么快,文档链接你也倒是跟上啊, 插件zip包下载,都是error link...难不成是我网络原因? 下载zip页面报错信息: This XML file does not appear ...

  8. remote指令添加远程数据库

    git remote add <name> <url> git remote add origin https://[your_space_id].backlogtool.co ...

  9. Spring boot Junit Test单元测试

    Spring boot 1.40 JUnit 4 需要依赖包 spring-boot-starter-test.spring-test 建立class,加上如下注解,即可进行单元测试,别的帖子里说要加 ...

  10. Effective C++ Item 10,11 Have assignment operators return a reference to *this Handle assignment to self in operator =

    If you want to concatenate assignment like this int x, y, z; x = y = z = 15; The convention is to ma ...