Hello友好的计算人员,
这是一个两部分问题。我正在编写两个shell脚本,目的是在文件夹及其子文件夹中的所有index.php文件中执行“查找和替换”。
第一个shell脚本是:
echo "running on all directories…"
find . -name '*.php' -exec ./search_replace.sh {} \;
然后运行文件search_replace:
echo "running search and replace script..."
sed -e 's/http:\/\/ericbrotto.com/file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio/g' index.php > index.htm
我的问题/疑问是:
当我运行第一个脚本时,它回显“运行搜索并替换脚本...”13次,这是有道理的,因为文件夹中有13个index.php文件。但结果是只完成了一个文件,即单词被替换,新的htm文件只创建一次。
无论如何都要这样做,以便不是基于.php文件创建一个新的.htm文件,而是可以使用相同的index.php文件替换单词?换句话说,他们可以编辑文件而无需创建新文件。
非常感谢,
答案 0 :(得分:1)
由于完整路径名被发送到您的search_replace.sh,您可以将index.php替换为$ 1,index.htm替换为$ 1.htm,然后
mv $1.htm $1
作为sed之后的一行
re:你的评论
原创
sed -e 's/http:\/\/ericbrotto.com/file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio/g' index.php > index.html
第s / b行
sed -e 's/http:\/\/ericbrotto.com/file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio/g' $1 > $1.html
mv $1.html $1
答案 1 :(得分:0)
find . -name '*.php' -type f -exec sed -i 's|http:\/\/ericbrotto.com|file:\/\/\/Users\/ericbrotto\/Documents\/Portfolio_CV_etc.\/Offline_Portfolio|g' "{}" +;