我有各种图像引用如下:
src="http://myblog.files.example.com/2011/08/image-1.jpg"
src="http://myblog.files.example.com/2010/05/image-2.jpg"
src="http://myblog.files.example.com/2012/01/image-3.jpg"
正如您所看到的,图像路径中唯一发生变化的是最后的数字(日期)。我想做的只是将所有图像的路径更改为:
/sites/default/files/blog-images/
......所以他们都会像:
src="/sites/default/files/blog-images/image-1.jpg"
src="/sites/default/files/blog-images/image-2.jpg"
src="/sites/default/files/blog-images/image-3.jpg"
我想知道是否有办法使用正则表达式或其他方法来做到这一点?路径中有数百个图像都具有不同的数字,因此手动执行此操作并不理想。
完整的代码示例:
<a href="http://myblog.files.example.com/2011/07/myimage-1.jpg">
<img class="alignright size-medium wp-image-423" title="the title" src="http://myblog.files.example.com/2011/07/myimage-1.jpg" alt="the alt" width="300" height="199" />
</a>
答案 0 :(得分:1)
src="http:\/\/myblog.files.example.com/\d{4}/\d{2}/([^\s]+)"
在$1
中搜索并捕获图像文件名。现在,您可以使用/sites/default/files/blog-images/$1
如果您的编辑器不支持范围,那么您需要重复\d
。
src="http:\/\/myblog.files.example.com/\d\d\d\d/\d\d/([^\s]+)"
答案 1 :(得分:0)
一个简单的sed one liner可以解决这个问题:
这个要测试:
sed -r 's@http://myblog.files.example.com/[0-9]{4}/[0-9]{2}/@/sites/default/files/blog-images/@g' FILE
这一个更改文件
sed -ri 's@http://myblog.files.example.com/[0-9]{4}/[0-9]{2}/@/sites/default/files/blog-images/@g' FILE
答案 2 :(得分:0)
有很多方法可以做你想做的事情。由于您在本文中标记了“grep”并且未指定任何特定的编程语言,因此我假设您要使用UNIX。
首先,测试一下这个命令:
find . -type f | sed 's/\.\/\([0-9]\{4\}\/[0-9]\{2\}\/\)\(.*\)/mv & sites\/default\/files\/blog-images\/\2/'
它将打印出将要执行的“mv”命令列表,如果它按照你想要的方式工作,你可以像sh
一样将它输入:{/ p>
find . -type f | sed 's/\.\/\([0-9]\{4\}\/[0-9]\{2\}\/\)\(.*\)/mv & sites\/default\/files\/blog-images\/\2/' | sh