我在一个非常大的文件夹结构中有多个名为dev.rc
的文件。这些文件包含环境变量,例如:
...
FOO=bar
...
我想用字符串baz
替换整个项目中的条形字符串
我试图通过管道传送一些bash命令,例如:find
和sed
,但是我无法将替换后的字符串的内容保存在原始文件中。
答案 0 :(得分:0)
使用globstar浏览文件:
#!/bin/bash
shopt -s globstar
for file in **/dev.rc; do
sed -i "s/=bar/=baz/" "$file"
done
答案 1 :(得分:0)
我已经编写了一个简单的PHP脚本来为您完成此任务。 将其另存为.php文件,并在apache localhost中使用或以php身份运行 记住用您的信息编辑代码的最后一行
<?php
/*
THIS IS COMMENT SECTION TO HELP YOU
$filecount = How much files you have to replace
$location = Location of your file ; Example "usr/bk/file.txt"
$string = The string you want to replace
$newstring = The new string you want to put
*/
function replace($filecount,$location,$string,$newstring){
for($i = 0; $i>= $filecount; $i++)
$file = file_get_contents($location);
file_put_contents($file,str_replace($string,$newstring,$file));
}
}
/*
Remember to replace the variables of the function using "","",""
Below is an example calling the function, replace with your own:
*/
replace(10,"/usr/locationhere.zip","foo","bar","baz");
答案 2 :(得分:-1)
您可以使用for
循环查找与文件名匹配的所有文件,然后执行简单的sed
命令并保存内容,并具有自动字符串替换功能,如下所示:>
for f in `find . -name dev.rc`; do
sed -i '' 's/bar/baz/g' $f
done
或者您也可以使用exec
:
find . -name 'dev.rc' -type f -exec sed -i '' 's/bar/baz/g' {} +