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

単純なsedoneライナーでうまくいくことができます:

これをテストします:

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 に答える