HTML PHP ファイルで、イメージファイル名のすべてのスペース名を変更します。

HTML PHP ファイルで、イメージファイル名のすべてのスペース名を変更します。

他のhtm.gz、html.gz、およびphp.gz Webファイルにはイメージがあり、.jpg形式のイメージには「-」の代わりにスペースを含む名前がありますが、すべてのイメージを持つ/images/ディレクトリには「-」スペースの代わりに

HTMLファイルには「<img class="photo" width="400" height="600" src="/images/red roses in summer 54.jpg" alt="">

"/images/"ディレクトリには、すべてのエントリが単語の間に「-」として表示されます(例:「red-roses-in-summer-54.jpg」)。

だから私が望むのは、/var/www/domain.com内のすべてのhtm.gz、html.gz、およびphp.gzファイルを検索し、すべての.jpgイメージを見つけてスペースを「-」に置き換えることができるbashコマンド/スクリプトです。 。したがって、/images/red Roses in Summer 54.jpgから/images/red-roses-in-summer-54.jpg

重要な場合、サーバーはcentos 7で実行されます。

ベストアンサー1

perl理想的にはpython。ただし、シェルスクリプトでこれを行うには、次のものをインストールできます。XML2HTMLをフラットファイル形式に変換し、行ベースのツール(たとえば、、など)で使用するのに適した名前付きhtml2ツールを提供するパッケージ。2htmlsedgrepawk

また、XMLおよびCSVファイルを操作するための同様のツールも含まれています。

sedその後、一致する行の空白をダッシュ​​に変換を使用できますimg src。その後、再びhtmlに変換します。

たとえば、サンプルHTML行を使用すると、次のようになります。

$ cat file.html 
<img class="photo" width="400" height="600" src="/images/red roses in summer 54.jpg" alt="">

$ html2 < file.html  | sed -e '\:/img/@src=/images/: s/ /-/g' | 2html 
<html><body><img class="photo" width="400" height="600" src="/images/red-roses-in-summer-54.jpg" alt="">

たとえば、元のファイルを変更されたバージョンに置き換えるには、出力をリダイレクトしますfile.new.htmlmv -f file.new.html file.html問題が発生した場合は、既知の良好な開始点に復元できるように、元のファイルのバックアップコピーをアーカイブすることをお勧めします。

ところで、結果のフラットファイル形式はhtml2次のようになります。

$ html2 < file.html 
/html/body/img/@class=photo
/html/body/img/@width=400
/html/body/img/@height=600
/html/body/img/@src=/images/red roses in summer 54.jpg
/html/body/img/@alt

xml2Debian、Ubuntu、その他のLinuxディストリビューション用にパッケージ化されています。 UNIX用に事前パッケージされていない場合は、上記のリンクからソースコードを見つけることができます。

多数のファイルを変更する方法はいくつかあります。以下は簡単なforループ例です。

for htmlfile in *.html ; do

   html2 < "$htmlfile" |
       sed -e '\:/img/@src=/images/: s/ /-/g' |
       2html > "$htmlfile.new" \
   && mv -f "$htmlfile.new" "$htmlfile"

done

警告:期待どおりに機能していることをテストしてください。今後多数のHTMLファイルで実行してください。そして、元のバックアップコピーを保管してください。ファイルのHTMLが完全に有効なHTMLでない場合(つまり、HTML構文チェッカーを通過できなかった場合)、html2 | ... | 2htmlHTMLファイルは従来よりも悪くなる可能性があります。

ファイルが多すぎるか、ファイルが複数のサブディレクトリにある場合は、この方法を使用する必要がありますfind ... -execfindこのサイトにはこれを使用する多数の例があります。

おすすめ記事