欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux下批量替换文件内容和文件名(转)

程序员文章站 2022-06-24 19:39:41
...

Linux下批量替换文件内容和文件名(转)

https://www.cnblogs.com/EasonJim/p/7965559.html

 

1、批量替换指定多个文件的文件内容

在指定目录/your/path里,查找包含old_string字符串的所有文件,并用new_string字符串替换old_string字符串。

sed -i "s/old_string/new_string/g" `grep old_string -rl /your/path`

sed

s :取代,

i :插入,

数据的搜寻并替换

sed 's/要被取代的字串/新的字串/g'

 

反引号``

反引号``是命令替换,命令替换是指Shell可以先执行``中的命令,将输出结果暂时保存。

 

grep

-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。

-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。

 

2、批量修改指定多个文件的文件名

在指定的路径/your/path下,查找以old_name字符串开头的所有文件,并以new_string替换掉old_string字符串。

find /your/path -name 'old_name*' | xargs -i echo mv \"{}\" \"{}\" | sed 's/old_name/new_name/2g' | sh  

实例:

find $PWD -name '\[www.java1234.com\]*' | xargs -i echo mv \"{}\" \"{}\" | sed 's/\[www.java1234.com\]/""/2g' | sh

说明:xargs提取查找的内容为参数,-i用于{}的提取,并提取到到指定变量{},echo是为了纯文本输出后面的mv命令,其中{}为变量,sed命令为文本编辑命令,其中可以执行s的替换,后面2g表示替换第二个匹配项。在使用时注意路径的空格和字符串转义。