linux 批量替换文件内容及查找某目录下所有包含某字符串的文件
转载请注明来源:https://www.cnblogs.com/hookjc/
1. sed
- grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'
例如:
对象:文件夹
- grep -rl 'windows' ./path | xargs sed -i 's/windows/linux/g'
2. find
对象:文件
- find -name 'test' | xargs perl -pi -e 's|windows|linux|g'
3. awk
- grep -i "windows" -r ./path | awk -F : '{print $1}' | sort | uniq | xargs sed -i 's/windows/linux/g'
这里使用了shell命令,先查找出文件,再用awk分割(以:切分),再行替换!
sed replace word / string syntax
The syntax is as follows:
- sed -i 's/old-word/new-word/g' *.txt
GNU sed command can edit files in place (makes backup if extension supplied) using the -i option. If you are using an old UNIX sed command version try the following syntax:
- sed 's/old/new/g' input.txt > output.txt
You can use old sed syntax along with bash for loop:
- #!/bin/bash
- OLD="xyz"
- NEW="abc"
- DPATH="/home/you/foo/*.txt"
- BPATH="/home/you/bakup/foo"
- TFILE="/tmp/out.tmp.$$"
- [ ! -d $BPATH ] && mkdir -p $BPATH || :
- for f in $DPATH
- do
- if [ -f $f -a -r $f ]; then
- /bin/cp -f $f $BPATH
- sed "s/$OLD/$NEW/g" "$f" > $TFILE && mv $TFILE "$f"
- else
- echo "Error: Cannot read $f"
- fi
- done
- /bin/rm $TFILE
A Note About Bash Escape Character
A non-quoted backslash \ is the Bash escape character. It preserves the literal value of the next character that follows, with the exception of newline. If a \newline pair appears, and the backslash itself is not quoted, the \newline is treated as a line continuation (that is, it is removed from the input stream and effectively ignored). This is useful when you would like to deal with UNIX paths. In this example, the sed command is used to replace UNIX path "/nfs/apache/logs/rawlogs/access.log" with "__DOMAIN_LOG_FILE__":
- #!/bin/bash
- ## Our path
- _r1="/nfs/apache/logs/rawlogs/access.log"
- ## Escape path for sed using bash find and replace
- _r1="${_r1//\//\\/}"
- # replace __DOMAIN_LOG_FILE__ in our sample.awstats.conf
- sed -e "s/__DOMAIN_LOG_FILE__/${_r1}/" /nfs/conf/awstats/sample.awstats.conf > /nfs/apache/logs/awstats/awstats.conf
- # call awstats
- /usr/bin/awstats -c /nfs/apache/logs/awstats/awstats.conf
The $_r1 is escaped using bash find and replace parameter substitution syntax to replace each occurrence of/ with \/.
perl -pie Syntax For Find and Replace
The syntax is as follows:
- perl -pie 's/old-word/new-word/g' input.file > new.output.file
来源:http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/
linux下查找某目录下所有文件包含某字符串的命令
- #从文件内容查找匹配指定字符串的行:
- $ grep "被查找的字符串" 文件名
- #从文件内容查找与正则表达式匹配的行:
- $ grep –e “正则表达式” 文件名
- #查找时不区分大小写:
- $ grep –i "被查找的字符串" 文件名
- #查找匹配的行数:
- $ grep -c "被查找的字符串" 文件名
- #从文件内容查找不匹配指定字符串的行:
- $ grep –v "被查找的字符串" 文件名
- #从根目录开始查找所有扩展名为.txt的文本文件,并找出包含"linux"的行
- find . -type f -name "*.txt" | xargs grep "linux"
来源:python脚本自动迁移
linux 批量替换文件内容及查找某目录下所有包含某字符串的文件的更多相关文章
- 运维笔记--Linux查找指定目录下某段时间的文件
查找指定目录下,60天之前的文件:find /mnt/xml_data -mtime +60 -name "*.xml" 找到并统计数量:find /mnt/xml_data -m ...
- Python3 批量替换文本内容
Python3 批量替换文本内容 示例: # coding:utf8 import os; def reset(): i = 0 path = r"H:\asDemo\workdemo\aw ...
- sql数据库批量替换dedecms内容关键字
之前写了一篇dedecms后台批量替换文章中的关键词,这边我们介绍一下用sql数据库批量替换dedecms内容关键字,当然要求你对数据库比较熟悉,修改前请自行做好备份. 1.更改文章中的内容 upda ...
- 批量替换存储过程内容脚本sp_SqlReplace
开始 在数据库开发过程中,如果某一个表字段名被重命名.那么在使用到该字段的存储过程,对应的表字段名也要修改. 当存在多个存储都有使用该表字段,需要逐个去修改替换,是一件比较繁琐的事情,我们需要一个能实 ...
- 帝国cms 批量替换 字段内容包含的 指定的 关键字 SQL命令
帝国cms 批量替换 字段内容包含的 指定的 关键字update phome_ecms_news_data_1 set newstext=replace(newstext,'原来','现在');
- [bash]查找指定目录下符合格式的txt文件
需求: 查找指定目录下符合yyyy-MM-dd(-b)NNN.txt格式的文件,如“2020-03-22-b888.txt” 目标目录内容: [root@localhost bashs]# ll /r ...
- C++查找指定目录下所以指定类型的文件
/*************************************************************** 函数名称:FindFile 查找指定目录下指定文件 输入:fileNa ...
- python_自动查找指定目录下的文件或目录的方法
代码如下 import os def find_file(search_path, file_type="file", filename=None, file_startswith ...
- CustomEditor的文件要放在Assets/Editor目录下
using UnityEditor; using UnityEngine; [CustomEditor(typeof(test))] public class testEditor : Editor ...
随机推荐
- Java EE数据持久化框架mybatis练习——获取id值为1的角色信息。
实现要求: 获取id值为1的角色信息. 实现思路: 创建角色表sys_role所对应的实体类sysRole. package entity; public class SysRole { privat ...
- Java初学者作业——编写程序计算实发工资(实践1)
返回本章节 返回作业目录 需求说明: 腾讯为Java工程师提供了基本工资(8000元).物价津贴及房租津贴.其中物价津贴为基本工资的40%,房屋津贴为基本工资的25%.要求编写程序计算实发工资. 实现 ...
- Spring5源码解析_IOC之容器的基本实现
前言: 在分析源码之前,我们简单回顾一下SPring核心功能的简单使用: 容器的基本用法 Bean是Spring最核心的东西,Spring就像是一个大水桶,而Bean就是水桶中的水,水桶脱离了水就没有 ...
- MongoDB分片集群机制及原理
1. MongoDB常见的部署架构 * 单机版 * 复制集 * 分片集群 2. 为什么要使用分片集群 * 数据容量日益增大,访问性能日渐下降,怎么破? * 新品上线异常火爆,如何支撑更多用户并发? * ...
- antd-vue中给table表格整行加点击事件
<a-table :columns="columns" :dataSource="data" :loading="loading" : ...
- spring boot + redis --- 心得
1.前言 习惯使用springMVC 配置 redis ,现在使用spring boot ,得好好总结怎么在spring boot 配置和使用 ,区别真的挺大的. 2.环境 spring boot ...
- Go的WaitGroup源码分析
WaitGroup 是开发中经常用到的并发控制手段,其源代码在 src/sync/waitgroup.go 文件中,定义了 1 个结构体和 4 个方法: WaitGroup{}:结构体. state( ...
- iView 用renderContent自定义树组件
iview的树组件在有默认选中状态的时候默认选中状态的样式改变有bug,默认选中的样式不好看,鉴于此,有renderContent来改造iview的树组件, 效果如图 代码如下 <templat ...
- 【Spring专场】「AOP容器」不看源码就带你认识核心流程以及运作原理
前提回顾 前一篇文章主要介绍了spring核心特性机制的IOC容器机制和核心运作原理,接下来我们去介绍另外一个较为核心的功能,那就是AOP容器机制,主要负责承接前一篇代理模式机制中动态代理:JDKPr ...
- 软件开发架构与网络之OSI七层协议(五层)
本期内容概要 python回顾 软件开发架构 网络理论前瞻 osi七层协议(五层) 以太网协议 IP协议 port协议 交换机 路由器 局域网 广域网 TCP协议 三次握手 四次挥手 UDP协议 内容 ...