Linux 批量替换文件内容

Linux 批量替换文件内容

目录

Linux 批量替换文件内容

场景前提

Linux find 命令

Linux sed命令

 参数说明:

 动作说明:

 正则实例

正题,替换不可见字符 <0x00>, vim 打开可能会显示 ^@

注意事项


场景前提

由于编辑器批量操作或者其他误操作,且没有线上代码仓库,或者无法通过代码仓库回滚(原因是本地修改了大量的代码)而导致要批量修改文件内容要怎么办。目前的情况就是公司防御没有做好,导致未提交的代码被加密了,虽然最后抢救回来,但是解密后的文件被大量添加了 不可见的字符串 <0x00> 熟悉Linux的都知道遇到这个就会停止读取了。而且在编辑器看起来非常难看,sublime有批量文件夹替换,但是量太多太卡了,不理想。最后决定用Linux下shell命令行来搞

Linux find 命令

find [路径] [参数]

find ./ -type f

其他参数就不解释了,上面的意思就是查找当前目录下所有所有普通文件 ,当然你也可以指定特定的一个文件

Linux sed命令

sed [-hnV][-e<script>][-f<script文件>][文本文件]

 参数说明:

  • -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
  • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  • -h或--help 显示帮助。
  • -n或--quiet或--silent 仅显示script处理后的结果。
  • -V或--version 显示版本信息。

 动作说明

  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  • d :删除,删除匹配的字符串,所以 d 后面通常不接任何东西;
  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

 正则实例

sed -i "s/search/replace/g" ./test.txt

 解释:

在test.txt文件中全局正则匹配到 search【改成你需要的】字符串 并替换为 replace 【改成你需要的】字符串,格式就是 s/匹配字符串/替换的字符串/g

正题,替换不可见字符 <0x00>, vim 打开可能会显示 ^@

sed -i "s/\x00//g" `find ./ -type f;`

最终替换命令组合为上面所示。意思是全局替换当前目下所有普通文件中包含不可见字符 <0x00> 为空字符,也就是去掉 <0x00>

注意事项

sed -i 参数代表直接修改原文件,请测试好之后再运行命令,并且做好备份

如果只是一小部分文件含有,或者要替换含有特定内容的文件,请用grep命令来过滤文件而不是find全部列举,使不必要文件进行sed操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值