• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 392
  • Last Modified:

UNIX Command Needed: How do I perform search/replace word on all html pages in subfolders

I'm trying to write a simple command that will perform search/replace for a word in all html (*.htm,*.html) files in all sub-folders.

I wrote this command, but it will only search within folder:

perl -pe 's/<search>/<replace>/g' *.htm*

Thanks,
0
maheflin25
Asked:
maheflin25
  • 2
1 Solution
 
arnoldCommented:
perl -i.bak -p -e 's/searchpattern/replacementpattern/'  *.html */*.html.
another option is to use find
find . -name "*.hml" | while read a; do
perl -i.bak -pe 's/<search>/<replace>/g' $a
done
The -i.bak will create a backup file of the one being changed and saved as file.html.bak

find . -name "*.html" -exec perl -i.bak -ep 's/pattern/replacemenet/g' {}\;
could work provided there aren't too many files.

0
 
maheflin25Author Commented:
Thanks for your solution, however it does not cover files in its subdirectories.

When I tried this command: find . -name "*.html" -exec perl -i.bak -ep 's/pattern/replacemenet/g' {}\;

I get an error message: find: missing argument to '-exec'

Regards,
0
 
arnoldCommented:
find goes through the directory structure.
is perl in your path?
which perl/
replace perl with /usr/bin/perl

alterantively, you can do
find . -name "*.html" | xargs perl -i.bak -ep 's/pattern/replacemenet/g'
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now