精华内容
下载资源
问答
  • Linux 批量替换文件内容 目录 Linux 批量替换文件内容 场景前提 Linux find 命令 Linux sed命令 参数说明: 动作说明: 正则实例 正题,替换不可见字符 <0x00>, vim 打开可能会显示 ^@ 注意事项 ...

    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操作

    展开全文
  • linux批量替换文件内容3种方法(perl,sed,shell) 3种方法linux批量替换文件内容3种方法(perl,sed,shell)

    linux批量替换文件内容3种方法(perl,sed,shell)

    3种方法:linux批量替换文件内容3种方法(perl,sed,shell)

    展开全文
  • 今天测试人员一不小心把导航的地址改错了,大约6000多个...经在网上一番辛苦搜索,找到以下几个命令,并尝试执行……深知“书到用时方恨少”,特此针对今天的情况总结了一下Linux批量替换文件内容的命令,  第一种:

               今天测试人员一不小心把导航的地址改错了,大约6000多个导航文件,要通过后台配置的话也很麻烦,可以通过linux命令实现对批量文件进行内容替换,但是技术经理不在,我对linux命令不熟,没办法只好硬着头皮来。经在网上一番辛苦搜索,找到以下几个命令,并尝试执行……最终终于实现效果,哎,“书到用时方恨少”,特此针对今天的情况总结了一下Linux批量替换文件内容的命令,

              第一种:   

        格式:sed -i "s/oldstr/newstr/g" filesname

        说明:oldstr     需要替换的旧字符串

              newstr     替换后的新字符串

              filesname  批量文件名称,支持正则,如:ST_*.json

        案例:

             如果我想把ST_*.json下面的文件里的“today” 替换为“tomorrow”,那就是:

             sed -i "s/today/tomorrow/g" ST_*.json

        但是这种命令有一个缺陷,就是替换的文件数量有限制,不过可以针对文件名称规则再细分几种类型,分几次执行就可以了。于是另寻出路,找到了下面一种:

        第二种:

        格式:sed -i "s/oldstr/newstr/g" `grep oldstr -rl yourdir`   

        说明:oldstr   需要替换的旧字符串

              newstr   替换后的新字符串

              yourdir  文件路径名称

        注意:在  `grep oldstr -rl /path`   中 ` 为1前边的翻引号`,而不是enter 前的 '

        但是执行出错,说是找不到路径,但是路径也正确,不明所以,还请大牛指教。然后我看到了一段说明说这种做法”对多个文件的处理可能不支持,需要用 xargs, 搞定。“也就是下面的方法

        第三种:

        格式:grep oldstr -rl /path | xargs sed -i "s/oldstr/newstr/g"
        说明:oldstr   需要替换的旧字符串

              newstr   替换后的新字符串

              path     文件路径名称

        案例:

             如果我想把/app/web/sitemap下面的文件里的“today” 替换为“tommorow”,那就是:

             grep  today  -rl /app/web/sitemap  grep |xargs sed -i "s/today/tommorow/g"
        执行完毕,效果就出来了!这个太好用了。

               我总结的可能不全,但是这两个用起来很顺手,如有其它顺手的命令,还请大家补充!

    展开全文
  • Linux 系统中经常会遇到批量替换文件内容的命令,有如下几个场景1、批量替换文件夹内文件的内容。 配合sed 和 grep两个命令使用。 1.1 在一个文件中替换字符串的命令。 sed -i "s/beijing/shanghai/g" ...

    Linux 系统中经常会遇到批量替换文件内容的命令,有如下几个场景

    1、批量替换文件夹内文件的内容。

        配合sed 和 grep两个命令使用。 

        1.1 在一个文件中替换字符串的命令。

        sed -i "s/beijing/shanghai/g" tmp.log

        1.2 在一个目录下,批量查找文件neirong

    grep "beijing" -rl yourDir

        1.3 批量替换文件夹内文件内容。

    sed -i "s/beijing/shanghai/g" `grep "beijing" -rl yourDir`

    2、批量替换文件名、文件夹的命令。

        配合sed 和 find 命令一起使用。

        2.1 find 查找文件名和文件夹

    find ./ -name beijing* // 查找当前目录下的以beijing开头的文件名。
    find ./ -name beijing* -type d //查找当前目录下以beijing开头的文件夹。
    

        2.2 sed 用于替换输出。

    sed 's/beijing/shanghai/' test.log //文件中查找内容。
    find ./ -name beijing*|sed 's/\(.*\)\(beijing\)\(.*\)/mv \1\2\3 \shanghai\3/'|sh //文件夹查找文件,并将文件名转化为 mv srcFile newFile 模式,最后应用管道命令。
    find ./ -name beijing* -type d |sed 's/\(.*\)\(beijing\)\(.*\)/mv \1\2\3 \1shanghai\3/'|sh



    展开全文
  • linux批量替换文件内容3种方法(perl,sed,shell) 方法1:   这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个 pom.xml文件,更郁闷的是在很多pom.xml文件里都单独指定了资源库的url,我...
  • 把/usr/local/apache/conf下的所有conf的文件内容里含有【/usr/local/apache/htdocs】,改为【/data/wwwroot】。具体操作如下: #sed -i “s/\/usr\/local\/apache\/htdocs/\/data\/wwwroot\/g” `find . -name “*...
  • linux批量替换文件内容的方法.docx
  • 原文地址:linux批量替换文件内容3种方法(perl,sed,shell)转作者:cheriec 方法1:   这两天在构建一个应用的使用用到了maven,由于project很大,足足有700多个pom.xml文件,更郁闷的是在很多pom.xml文件里都单独...
  • 批量替换指定目录下文件的文件名 Windows下请先下载并安装 Git Bash客户端. 如下截图rename目录下有hello1.c hello2.c 两个文件,当前需要将hello替换为helloworld. 执行操作: find ./ -name “hello” | xargs -i ...
  • linux批量替换文件内容

    千次阅读 2015-10-21 09:33:24
    linux批量替换文件内容 两种方法:都使用sed -i命令 1、 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`  linux sed 批量替换多个文件中的字符串  sed -i "s/oldstring/newstring/g" `grep ...
  • 今天更新两条实用的命令,分别实现批量修改文件名和批量替换文件中的内容。 操作系统:linux系统(笔者使用的是ubuntu20) 批量修改文件名: 进入需要修改的文件名目录, A代表将被查找的字符串, D代表用来替换...
  • 本篇文章主要介绍了linux批量替换文件内容的三种方法(perl,sed,shell),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
  • 1:查找 find . -type f -name "*.html"|xargs grep ... ...2:查找并替换 ...find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' ...在Perl 命令中加上-e 选项,后跟一行代码,那
  • linux快速批量替换文件内容 描述 一下情景: 某天安装个solr集群,要安装solr,N多core的那种,要把每个core配置文件中的“static firstSearcher warming in solrconfig.xml”变为 “:” ,还有数据的连接地址、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,421
精华内容 10,168
关键字:

linux批量替换文件命令

linux 订阅