Go实现查找目录下(包括子目录)替换文件内容
【功能】
按指定的目录查找出文件,如果有子目录,子目录也将进行搜索,将其中的文件内容进行替换。
【缺陷】
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实现查找目录下(包括子目录)替换文件内容的更多相关文章
- shell获取目录下(包括子目录)所有文件名、路径、文件大小
一例shell脚本:取得目录下(包括子目录)所有文件名.路径与文件大小. 代码,shell脚本: lsdir.sh #!/bin/bash # #site: www.jquerycn.cn funct ...
- java 提取目录下所有子目录的文件到指定位置
package folder; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExcept ...
- Python 遍历目录下的子目录和文件
import os A: 遍历目录下的子目录和文件 for root,dirs ,files in os.walk(path) root:要访问的路径名 dirs:遍历目录下的子目录 files:遍历 ...
- linux下sed批量替换文件内容
在linux超级终端下编辑文档是件比较麻烦的事情,下面简单介绍一下如何在linux下批量替换文件内容 linuxsed 批量替换多个文件中的字符串 格式: sed -i "s/查找字段/替换 ...
- copy指定目录下包括子目录中所有的文件
#include <windows.h> #include <iostream> #include <string> using namespace std; DW ...
- Linux 查找目录下大于*M的文件
1. 查找指定文件夹下等于1M的文件 find ./ -size 1M | wc -l 2. 查找指定文件夹下大于1M的文件 find ./target_path -size +1M | wc -l
- shell编程: 获得目录下(包括子目录)所有文件名,路径和文件大小
转自:http://blog.chinaunix.net/uid-26000296-id-3575475.html function ergodic(){ ` do "/"$fil ...
- os.walk模块查找目录下的所有txt文件
- [转载] linux查找目录下的所有文件中是否含有某个字符串
链接自 http://blog.sina.com.cn/s/blog_691a84f301015khx.html,并略加修订. 查找目录下的所有文件中是否含有某个字符串 find .|xargs gr ...
随机推荐
- php if语句判定ms查询是否为空
$select_re_id=$cnx->query("select count(*) c from Yid where pid='".$pid."' and gid ...
- 解决 Failure to transfer * from http://repo1.maven.org/maven2
解决 Failure to transfer * from http://repo1.maven.org/maven2 Failure to transfer org.apache.maven:mav ...
- Java Web开发SpringMVC和MyBatis框架开发环境搭建和简单有用
1.下载SpringMVC框架架包,下载地址: 点击下载 点击打开地址如图所看到的.点击下载就可以 然后把相关的jar拷贝到lib下导入 2.MyBatis(3.4.2)下载 X-Amz-Algori ...
- 浅谈Spring(一)
Spring 框架是一个分层架构,由 7 个定义良好的模块组成.Spring 模块构建在核心容器之上,核心容器定义了创建.配置和管理 bean 的方式. watermark/2/text/aHR0cD ...
- TPS和事务响应时间的关系
例子:一个高速路有10个入口,每个入口每秒钟只能进1辆车 1.请问1秒钟最多能进几辆车? TPS=10 2.每辆车需要多长时间进行响应? reponse time = 1 3.改成20辆车 ...
- 【Python】python-memory-management
http://deeplearning.net/software/theano/tutorial/python-memory-management.html#python-memory-managem ...
- MathType中怎么设置字体默认颜色
MathType功能非常强大,在编辑公式时使用非常方便.利用MathType破解版不仅可以改变公式的字体和字号,也可以改变公式字体颜色.有时在编辑完成后需要对MathType公式格式全部进行修改,这时 ...
- 多线程环境下调用 HttpWebRequest 并发连接限制
.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 windows xp , windows 7 下默认是2,在服务器操作 ...
- windows 系统重装之后怎么恢复oracle数据库
今天单位的服务器系统进不去了,重做了系统,有重要的oracle数据,经理让我恢复一下oracle数据,试着尝试了一下 1.首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle.我暂时改 ...
- DLL入口函数
BOOL APIENTRY DllMain(HINSTANCE hInst /* Library instance handle. */, DWORD reason /* Rea ...