-
2020-12-23 22:48:53
一、批量递归查找包含字符串的所有文件
grep 命令用于查找在文件里符合条件的字符串
grep -rl "B" /root/ceshi/*
参数解释:
-r 递归查找
-l 列出匹配的文件名
-n 列出所在的行号
* 代表ceshi目录下的所有文件
--include="*.text" 只查找后缀名是.text的文件
--exclude="*.sql" 查找除了后缀名是.sql的文件
示例一:
[root@ceshi ~]# grep -rl "B" /root/ceshi/*
/root/ceshi/a
/root/ceshi/aaaa.sql
/root/ceshi/b
/root/ceshi/bb.bak
/root/ceshi/bb.io
/root/ceshi/catalog/catalog/a.r
/root/ceshi/catalog/bb.abc
/root/ceshi/e.ior
/root/ceshi/r.doc
示例二:
[root@ceshi ~]# grep -rl "B" --exclude="*.sql" /root/ceshi/*
/root/ceshi/a
/root/ceshi/b
/root/ceshi/bb.bak
/root/ceshi/bb.io
/root/ceshi/catalog/catalog/a.r
/root/ceshi/catalog/bb.abc
/root/ceshi/e.ior
/root/ceshi/r.doc
二、批量替换文件的字符串
sed 命令用语批量操作文件中的字符串
sed -i s/"a"/"A"/g aa.txt
参数:
-i 直接在文档里修改内容,而不打印到终端;如果不加i,默认并不会修改文件,只是将替换的内容打印到终端。
s 表示替换命令
g 表示替换每行的所有符合条件的字符串;如果不加g,默认只替换每行的第一个符合条件的字符串。
aa.txt 要操作的文件名,也可以是 * 代表当前目录下所有的文件
示例一:
[root@ceshi ~]# vi aa
AAA
BBB
[root@ceshi ~]# sed s/"A"/"a"/g aa
aaa
BBB
# 这里并没有修改文件的内容,只是打印到了终端
[root@ceshi ~]# cat aa
AAA
BBB
示例二:
[root@ceshi ~]# sed -i s/"A"/"a"/g aa
[root@ceshi ~]# cat aa
aaa
BBB
# 这里修改文件的内容完成
三、xargs
xargs 命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具,它擅成长将标准输入数据转换成命令行参数。
echo "-lh" | xargs ls
上边命令相当于:xargs将"-lh" 传递给了ls作为参数,相当于执行ls -lh
[root@ceshi ~]# echo "-lh" | xargs ls
total 445M
-rw-r--r--. 1 root root 8 Mar 28 11:13 aa
drwxr-xr-x. 3 root root 108 Mar 28 11:13 ceshi
-rw-r--r--. 1 root root 663 Jan 16 15:09 client.py
-rw-r--r--. 1 root root 254 Jan 8 15:36 Dockerfile
-rw-r--r--. 1 root root 28M Dec 14 01:46 elasticsearch-6.1.0.rpm
-rw-r--r--. 1 root root 339M Oct 5 23:44 jdk-9.0.1_linux-x64_bin.tar.gz
drwxr-xr-x. 17 501 501 4.0K Jan 16 15:02 Python-3.6.4
-rw-r--r--. 1 root root 22M Jan 16 14:39 Python-3.6.4.tgz
-rw-r--r--. 1 root root 58M Oct 5 23:44 serverjre-9.0.1_linux-x64_bin.tar.gz
实际上就等于ls -lh
[root@ceshi ~]# ls -lh
total 445M
-rw-r--r--. 1 root root 8 Mar 28 11:13 aa
drwxr-xr-x. 3 root root 108 Mar 28 11:13 ceshi
-rw-r--r--. 1 root root 663 Jan 16 15:09 client.py
-rw-r--r--. 1 root root 254 Jan 8 15:36 Dockerfile
-rw-r--r--. 1 root root 28M Dec 14 01:46 elasticsearch-6.1.0.rpm
-rw-r--r--. 1 root root 339M Oct 5 23:44 jdk-9.0.1_linux-x64_bin.tar.gz
drwxr-xr-x. 17 501 501 4.0K Jan 16 15:02 Python-3.6.4
-rw-r--r--. 1 root root 22M Jan 16 14:39 Python-3.6.4.tgz
-rw-r--r--. 1 root root 58M Oct 5 23:44 serverjre-9.0.1_linux-x64_bin.tar.gz
四、grep+sed+xargs实现批量替换多个文件里边的字符串
查看旧的文件内容:
[root@ceshi ~]# more ceshi/a
aaaaaaaaaaaa
bbbbbbbbbbbb
aaaaaaaaaaaa
[root@ceshi ~]# more ceshi/bb.io
aaaaaaaaaaaa
bbbbbbbbbbbb
aaaaaaaaaaaa
[root@ceshi ~]# more ceshi/catalog/catalog/a.r
aaaaaaaaaaaa
bbbbbbbbbbbb
aaaaaaaaaaaa
统计替换前的文件数量
[root@ceshi ~]# grep -rl "b" --exclude="*.sql" ceshi/* | wc -l
8
注:这里运用--exclude是因为.sql是数据库文件,不能随便修改
运行修改命令,将文件内容中包含b的 都替换成B
[root@ceshi ~]# grep -rl "b" --exclude="*.sql" ceshi/* | xargs sed -i s/"b"/"B"/g
替换后,查看文件内容,所有的ceshi目录下的包含的b 都替换成了B
[root@ceshi ~]# more ceshi/a
aaaaaaaaaaaa
BBBBBBBBBBBB
aaaaaaaaaaaa
[root@ceshi ~]# more ceshi/bb.io
aaaaaaaaaaaa
BBBBBBBBBBBB
aaaaaaaaaaaa
[root@ceshi ~]# more ceshi/catalog/catalog/a.r
aaaaaaaaaaaa
BBBBBBBBBBBB
aaaaaaaaaaaa
统计替换后的文件数量:
[root@ceshi ~]# grep -rl "B" --exclude="*.sql" ceshi/* | wc -l
8
还有一种写法,实现结果是一样的
sed -i s/"b"/"B"/g `grep -rl "b" --exclude="*.sql" /root/ceshi/*`
注意: `grep -rl "b" --exclude="*.sql" /root/ceshi/*` 这里的开头和结尾的是反撇号,而不是单引号
反撇号:功能是将命令的输出结果给变量;在这里的作用是将输出查找到的文件名给sed用于字符串替换。
修改完成。
更多相关内容 -
如何把多个文字在多个文章里面批量替换
2020-07-09 11:42:18工具:文本账号文件免安装便捷管理神器1、打开工具,切换到批量文本替换模块,里面写...5、在左侧001上右键,可以看到一个批量替换的选项,点击就替换这一个文章,如果是一个文件夹,那么就会把整个文件夹里的文章按规工具:文本账号文件免安装便捷管理神器
1、打开工具,切换到批量文本替换模块,里面写好替换的规则,左侧写目标,右侧写结果,写好后保存
2、把保存好的“目标”替换规则上,右键,点击“以此参照执行”,这个规则就会被勾选
3、勾选代表将会以这个规则为参照本去执行替换
4、切换到文章模块,快捷键:Ctrl+1,随便建一个文章,叫001,里面就写上我规则里的目标吧,这样替换后就直接能看结果
5、在左侧001上右键,可以看到一个批量替换的选项,点击就替换这一个文章,如果是一个文件夹,那么就会把整个文件夹里的文章按规则去做替换操作(新版本的替换效果可以根据电脑性能来弹性执行,如果要处理很多内容的替换时,比如十几万个文件要替换,耗时特别长,干等着无聊,那总会想着用电脑干其他事,那你用电脑干其他事的时候,工具自己会自动降低性能,以保证你干其他事不卡,如果什么都不做,就只有工具自己做替换任务,工具就会自己全速执行替换任务,这一点很强大)
6、在文章里面右键,也能看到
7、点击后,弹出提示,第一个提示就直接点确定,就是以“目标”规则执行
8、第二个询问的弹窗,也点是,其实是否在这里都一样,因为001里面我每个要替换的内容都占一行,按行替换也可以,具体什么时候选哪个替换,看弹出的说明就明白了,还是很简单易懂的
9、然后就会自己执行替换了,等它执行好了就行
10、结果:
-
cad批量替换文字
2019-03-07 17:01:25c#环境,不打开cad文件,对cad文件里面的文字进行批量替换 -
批量替换excel文字
2018-08-11 11:51:39此工具可以用于批量替换excel表格中指定的文字,此工具可以用于批量替换excel表格中指定的文字 -
Word文档内容页眉页脚批量替换工具.doc
2021-08-29 10:06:46word vba 批量清除页眉页脚,批量替换Word内容,可多项同时替换,非常好用 -
CAD批量文本替换程序
2017-05-07 21:34:49CAD批量文本替换程序,批量文本替换程序采用基于AutoCAD的VBA编写,能够批量替换多个文件中的相同文本。免费软件,无任何功能和时间上的限制。 -
PDF批量替换文字器 - 替换PDF文字内容
2019-07-03 19:18:22如果你的PDF文档中含有敏感词并且不想让阅读者看到,您可以用PDF批量替换文字器将这个词替换成*号或者空格。 批量替换PDF中的人名或者品牌名: 比如你需要替换所有PDF文件中的一个人名或者品牌名,你... -
批量替换CAD中的文字
2019-04-26 15:46:22可以一次性修改多个文件中的文字, 程序采用基于AutoCAD的VBA编写,能够批量替换多个文件中的相同文本。免费软件,无任何功能和时间上的限制。 -
批量文字替换工具批量文字替换工具
2010-05-28 11:17:08批量文字替换,很好的数据整理工具,很牛的哦,现在免费送给大家了 -
》》》批量替换多个word文档多处内容小工具《《
2022-04-02 14:37:21批量替换、多个word文档、多处内容、word中表格内容、小工具 -
为多个文本文件做内容批量替换
2011-10-10 20:35:28小软件Replace Plus:为多个文本文件做内容批量替换 当我们的文本里有些相同的文本内容要替换成其他内容时,可以运用到“文本替换”功能,这一功能在诸多的文本编辑软件里都有,并不算稀奇。但是,如果你有多个文件... -
Shell脚本实现批量替换文件内容
2020-09-15 17:58:17主要介绍了Shell脚本实现批量替换文件内容,本文主要实现批量修改一个备份脚本里的备份路径,其它批量替换也可以修改使用,需要的朋友可以参考下 -
批量替换word文档文字工具
2019-04-17 10:43:26批量替换word文档文字工具,绿色免安装,无需注册码,直接运行 -
python批量替换多文件字符串问题详解
2020-12-25 23:42:15sed和grep结合使用可以替换当前文件夹多个文件的内容。 格式 : sed -i ‘s/原字符串/新字符串/g’ `grep -rl 原字符串 所在目录` 示例代码: sed -i ‘s/writeBuffer/write_buffer/g’ `grep -rl -
多WORD文档批量查找替换 宏
2022-03-03 22:04:08当需要在多个WORD文档中批量查找替换时,此宏可帮助遍历整个目录下的所有doc和docx格式的word文件并批量进行替换保存操作,大大提高工作效率。 此文档是一个WORD的VBA宏,不存在病毒也无需注册收费。且除了需要打开... -
Excel批量替换,多个excel文件批量查找和替换的绿色工具,Excel多个Sheet批量替换
2019-06-13 09:33:22多个EXCEL怎么进行快速批量替换 如果我们有多个Excel文件,多个Sheet,需要...有一个在线免费工具,不需熟悉vba或者公式函数,地址:www.excelfb.com,点击:批量替换 中的 多个Excel文件批量替换 1、新建一个Exce...多个EXCEL怎么进行快速批量替换
如果我们有多个Excel文件,多个Sheet,需要进行多个文件多个关键字的批量替换,将每个关键字替换成对应的文字。
有一个在线免费工具,不需熟悉vba或者公式函数,地址:www.excelfb.com,点击:批量替换 中的 多个Excel文件批量替换
注:只进行批量查找请看文章:https://blog.csdn.net/loubo_001/article/details/91819288
(注意要使用谷歌浏览器)
使用方法如下:
例如,我有以下多个Excel文件,每个文件中都要进行如下替换:
1、新建一个Excel文件,制作批量替换规定文件如下:
2、选择要替换的文件,选择制作好的批量替换规定文件
3、如果全部范围都替换不需要指定列,如果固定列替换,输入Excel列号
4、点击“替换—生成新文件”,等待下载替换完成的文件(对于谷歌浏览器:下载多个文件很方便;火狐浏览器:要一个一个点保存)
5、下载的文件一般位于 计算机->下载 目录中
-
文件快手-文件批量复制替换工具
2020-04-18 14:20:01文件批量复制替换工具 文件批量替换、文件批量复制、文件按路径复制、文件名列表、文件夹名列表、批量创建文件夹、复制子文件夹文件到根目录、复制多个文件到多个目录、文件查找替换、文件批理查找替换、文件批理... -
用Python批量替换多个Word文件中的文字
2021-02-14 23:39:04'''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' #读取段落中的所有run,找到需替换的信息进行替换 for para in doc.paragraphs: # for...定义函数info_update。只需要向其中传入目标文件路径,待替换的词和新词即可
import docx def info_update(doc,old_info, new_info): '''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' #读取段落中的所有run,找到需替换的信息进行替换 for para in doc.paragraphs: # for run in para.runs: run.text = run.text.replace(old_info, new_info) #替换信息 #读取表格中的所有单元格,找到需替换的信息进行替换 for table in doc.tables: for row in table.rows: for cell in row.cells: cell.text = cell.text.replace(old_info, new_info) #替换信息
传入需要替换的原文件
import os #用于获取目标文件所在路径 path="data/" # 文件夹路径 files=[] for file in os.listdir(path): if file.endswith(".docx") and file.startswith("公司"): #排除文件夹内的其它干扰文件,只获取word文件 files.append(path+file) files #打印结果 ['data/公司001合同.docx', 'data/公司002合同.docx', 'data/公司003合同.docx', 'data/公司004合同.docx', 'data/公司005合同.docx', 'data/公司006合同.docx', 'data/公司007合同.docx', 'data/公司008合同.docx', 'data/公司009合同.docx', 'data/公司010合同.docx']
根据替换条件替换后保存
for file in files: doc = docx.Document(file) info_update(doc,"商贸", "仁和") doc.save("data/替换结果/{}".format(file.split("/")[-1])) print("{}替换完成".format(file)) #打印结果 data/公司001合同.docx替换完成 data/公司002合同.docx替换完成 data/公司003合同.docx替换完成 data/公司004合同.docx替换完成 data/公司005合同.docx替换完成 data/公司006合同.docx替换完成 data/公司007合同.docx替换完成 data/公司008合同.docx替换完成 data/公司009合同.docx替换完成 data/公司010合同.docx替换完成
如果要替换指定地方的关键字,先获取关键字所在段落。
#获取词"商贸"所在段落 import docx #导入docx库 doc = docx.Document("data/含干扰词/特殊_含干扰词.docx") #打开word文件 text=[] #新建一个空列表text,然后将word文档中的所有段落对应的文本提取并存入这个列表。 #列表是可以使用索引函数的,而列表里面元素的索引正好对应段落的索引。 for para in doc.paragraphs: #读取word中的每个段落 text.append(para.text) print(len(text)) target_index=[] #空列表target_index,用于存储包含“商贸”一词的字符串在列表text中的索引 for i in text: if "商贸" in i: target_index.append(text.index(i)) target_index #77 #[15, 26, 32, 38, 66]
为了验证是否准确,我们可以打印看一下相应索引对应的段落是否真的包含“商贸”一词。如下打印结果显示,结果很理想。
for j in target_index: print(doc.paragraphs[j].text) ’‘’乙方:ABC商贸有限责任公司 1.交货方法:由乙方送货(国家主管部门规定有送货办法的,按规定的办法执行;没有规定送货办法的,按双方协议执行);商贸 1.所有货物由乙方送到交货地点且甲方确认收货后5天内,由甲乙双方共同对货物的包装、 外观、数量、商标、型号、规格及性能等进行验收,签署检验报告。如乙方未按约定到甲 方指定地点参加检验的,应视为乙方对甲方单方检验的结果予以确认。验收标准执行合同 规定的货物质量标准。商贸 总价指甲方的交货价格,该价格应包含货物价格、通关费、包装费、物流费、装卸费、 保险费、在甲方指定场所的安装调试费、必要的培训费以及增值税等一切费用。在乙 方完全履行本合同下全部义务的情形下,除非另有书面约定,否则合同金额是甲方应 当向乙方支付的全部费用 。商贸 本合同自双方法定代表人或委托代理人签字盖章后生效,至合同条款履行完毕时终止。商贸‘’‘
因为我们只替换第一、第三、第六个“商贸”为“仁和”,而第六个在表格中。所以需要改一下原来的替换函数info_update,命名为新的函数info_update_new,我们在函数内指定只替换段落15和32中的目标词,表格中的目标词也继续替换。
import docx def info_update_new(doc,old_info, new_info): '''此函数用于批量替换合同中需要替换的信息 doc:文件 old_info和new_info:原文字和需要替换的新文字 ''' #读取段落中的所有run,找到需替换的信息进行替换 for i in [15,32]: para=doc.paragraphs[i] for run in para.runs: run.text = run.text.replace(old_info, new_info) #替换信息 #读取表格中的所有单元格,找到需替换的信息进行替换 for table in doc.tables: for row in table.rows: for cell in row.cells: cell.text = cell.text.replace(old_info, new_info) #替换信息
用于获取目标文件所在路径
import os #用于获取目标文件所在路径 path="data/含干扰词/" # 文件夹路径 files=[] for file in os.listdir(path): if file.endswith(".docx"): #排除文件夹内的其它干扰文件,只获取word文件 files.append(path+file) for file in files: doc = docx.Document(file) info_update_new(doc,"商贸", "仁和") doc.save("data/替换结果/{}".format(file.split("/")[-1])) print("{}替换完成".format(file)) #data/含干扰词/特殊_含干扰词.docx替换完成
-
批量替换文件中的字符
2019-08-08 17:13:39改工具是用idea编写的java小工具,改工具是批量替换文件夹下所有目标字符串为指定字符串,代码采用递归查找文件,文件流读写操作字符串供大家学习使用。也可以自己打成jar包脚本运行。注意:需要有java环境 -
Word文档批量替换工具.doc
2019-07-01 11:05:30VBA做的工具,将需要替换的文字输入到表格中,然后一键完成多个文件的替换。特别适合一些格式化文件,比如合同、产品说明、ISO标准化文档(质量手册、程序文件、管理手册)、项目推广方案等,先做批量替换,再进行... -
批量修改替换CAD文本文字!
2014-04-09 03:11:12批量修改CAD文本文字!批量替换CAD图纸里的文字!batchtextchg -
神器:PDF批量替换文字
2020-05-10 13:17:15第一次给大家带来的是PDF批量替换文字器。 一.软件介绍 现在越来越多的办公文件是用PDF格式保存的,因为PDF格式在设计上内容不容易被修改。所以办公一族可能会因为需要替换或更换PDF文件内容中的个别文字而感到... -
写了个批量替换字符串的bat批处理(replaceChar.bat)
2020-09-21 09:15:33鉴于dos知识有限,还没找到好的办法来避免这两种状况。如果用shell脚本完成替换功能就简单多了。或者直接用ultraedit的替换功能更简单 -
对AutoCAD图纸执行批量文字替换的程序-基于AutoLISP
2021-02-07 16:28:141.2.2 可一次性批量替换多处内容 1.2.3 支持从txt文档中读取字符列表 2 使用方法: 2.1 打开CAD软件→输入APPLOAD指令→根据MFIND.lsp的路径载入该程序 2.2 使用mfind快捷键即可使用该程序 2.3 附详细使用说明 ... -
TXT文件批量处理工具.rar
2020-04-10 21:33:0810、批量替换文本:多个文件中批量替换文本 11、删除行首数字:删除行首的数字,一般对于行首递增的数字有明显效果。 12、批量删除行首字符:删除行首自定义多少个字符,一个字母,一个数字,一个汉字,一个标点都... -
TXT文本批量替换内容软件.exe
2022-05-07 17:55:53纯文本批量替换是一款非常专业且优秀的TXT文本替换工具,它能够轻松的帮助用户将TXT文本内容进行替换,可同时替换多个TXT文件到相同或不同的内容,支持批量替换。 -
Linux Sed 批量替换多个文件中的字符串
2021-05-09 00:21:52Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。用sed命令可以批量替换多个文件中的字符串。sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`例如:我要把... -
一次替换多个字符串,批量替换多个字符串 可执行文件 exe
2018-01-26 10:18:44一次替换多个字符串,批量替换多个字符串,详情见http://blog.csdn.net/qq_29466963/article/details/79169169 -
cad文本批量替换(多文件相同文本)
2013-05-08 15:59:06注意是多个文件中的相同文本,不是一个文件中的文本列表替换。