0

我有各种这样引用的图像:

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>
4

3 回答 3

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]+)"

http://regexr.com?30o8e

于 2012-04-23T21:50:30.003 回答
0

一个简单的 sed one 班轮可以解决问题:

这个要测试:

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
于 2012-04-23T21:52:39.107 回答
0

有很多方法可以做你想做的事情。由于您在这篇文章中标记了“grep”并且没有指定任何特定的编程语言,我将假设您想使用 UNIX。

首先,测试这个命令:

find . -type f | sed 's/\.\/\([0-9]\{4\}\/[0-9]\{2\}\/\)\(.*\)/mv & sites\/default\/files\/blog-images\/\2/'

它将打印出将要执行的“mv”命令列表,如果它按照您的意愿工作,您可以sh像这样通过管道输入:

find . -type f | sed 's/\.\/\([0-9]\{4\}\/[0-9]\{2\}\/\)\(.*\)/mv & sites\/default\/files\/blog-images\/\2/' | sh
于 2012-04-23T21:59:04.670 回答