Loading ...
Sorry, an error occurred while loading the content.

Search and Replace in all files

Expand Messages
  • salmankhilji
    I would like to replace a text string with another inside the entire directory. ME should recursse into all sub-directories and find all *.[hHcC]* files and
    Message 1 of 4 , Feb 10, 2004
    • 0 Attachment
      I would like to replace a text string with another inside the entire
      directory. ME should recursse into all sub-directories and find all
      *.[hHcC]* files and carry out the replacement.

      There is the command replace-all-string, but I don't want to manually
      enter a list of all the files in which the replacement should occur.

      I could use the find command but then I need a way to carry out the
      repalcement using the command line. I tried something like this on
      one file but it didn't work.

      me "@replace-all-string" ContentStream Stream opCurveY.cpp

      Can someone please help me

      Salman
    • Jon Green
      ... Well running on UNIX then you can do the following (query-)replace-all-string Replace all: AAA Replace [AAA] with: BBB In Files: *.cpp */*.cpp */*/*.cpp
      Message 2 of 4 , Feb 10, 2004
      • 0 Attachment
        salmankhilji wrote:
        > I would like to replace a text string with another inside the entire
        > directory. ME should recursse into all sub-directories and find all
        > *.[hHcC]* files and carry out the replacement.
        >
        > There is the command replace-all-string, but I don't want to manually
        > enter a list of all the files in which the replacement should occur.
        >
        > I could use the find command but then I need a way to carry out the
        > repalcement using the command line. I tried something like this on
        > one file but it didn't work.
        >
        > me "@replace-all-string" ContentStream Stream opCurveY.cpp
        >
        > Can someone please help me
        >
        > Salman
        >
        >

        Well running on UNIX then you can do the following

        (query-)replace-all-string
        Replace all: AAA
        Replace [AAA] with: BBB
        In Files: *.cpp */*.cpp */*/*.cpp */*/*/*.cpp

        Add as many stars as you need levels.

        If you are running on Windows then this will depend what
        kind of grep you have and how it behaves with '*'s

        Must admit would be nicer with find, but does the job.

        Jon.
      • Steven Phillips
        There are two other solutions to solving this problem and which one to use depends on the scale of the replacing: 1) For a small number of replacements I tend
        Message 3 of 4 , Feb 10, 2004
        • 0 Attachment
          There are two other solutions to solving this problem and which one to use
          depends on the scale of the replacing:

          1) For a small number of replacements I tend to use the rgrep (recursive grep)
          command to find all the strings to be replaced in all the directory-tree. This
          command is available on windows as long as you make cygwin's 'find' first in
          the path (see help page). I then create a simple key-board macro which
          typically uses the get-next-line and '-1 replace-string ...' commands to do
          the actual replacement. This is a very quick and easy solution.

          2) I once decided that in a large library (thousands of lines of code split
          across many directories) that its definition and use of int32 was not a good
          idea (caused compile error on AIX) so should be changed to xxInt, float32 ->
          xxFloat, same for int8, float64 and then theres all the functions that have
          types in their name etc etc. I ended up with a list of 100+ changes to be
          made - rather a large headache.

          It was for this reason I created the replace-all-pair command. I started by
          concentrating on the first compiled directory and created a list of
          replacement pairs which up-graded that directory AND made sure that that
          directory still worked/compiled. I then moved onto the next, used
          replace-all-pair on the existing list and then added to the list any other
          changes need for that directory. And then I moved onto the next and the next.

          The process did not take long and once complete I had a complete list of all
          the changes made in a form that meant I could easily upgrade all programs that
          used the library (using replace-all-pair obviously). Again this approach is
          also available on windows and only requires access to a reasonable grep
          command, see help page on the command. One further tip, when adding to the
          replacement list I used the Edit -> Narrow To feature to exclude replacement
          pairs that had already been applied to avoid re-applying them as this could
          lead to unwanted side effects. If you use this approach please backup your
          files first as changes tend to be permanent!

          Steve

          > Subject: [jasspa] Search and Replace in all files
          > From: Jon Green <jon@...>
          > Date: Tuesday, February 10, 2004, 7:59:09 PM
          > To: jasspa@yahoogroups.com
          > salmankhilji wrote:
          >> I would like to replace a text string with another inside the entire
          >> directory. ME should recursse into all sub-directories and find all
          >> *.[hHcC]* files and carry out the replacement.
          >>
          >> There is the command replace-all-string, but I don't want to manually
          >> enter a list of all the files in which the replacement should occur.
          >>
          >> I could use the find command but then I need a way to carry out the
          >> repalcement using the command line. I tried something like this on
          >> one file but it didn't work.
          >>
          >> me "@replace-all-string" ContentStream Stream opCurveY.cpp
          >>
          >> Can someone please help me
          >>
          >> Salman
          >>
          >>

          > Well running on UNIX then you can do the following

          > (query-)replace-all-string
          > Replace all: AAA
          > Replace [AAA] with: BBB
          > In Files: *.cpp */*.cpp */*/*.cpp */*/*/*.cpp

          > Add as many stars as you need levels.

          > If you are running on Windows then this will depend what
          > kind of grep you have and how it behaves with '*'s

          > Must admit would be nicer with find, but does the job.

          > Jon.





          > __________________________________________________________________________

          > This is an unmoderated list. JASSPA is not responsible for the content of
          > any material posted to this list.

          > To unsubscribe, send a mail message to

          > mailto:jasspa-unsubscribe@yahoogroups.com

          > or visit http://groups.yahoo.com/group/jasspa and
          > modify your account settings manually.



          > Yahoo! Groups Links
        • Thomas Hundt
          The really efficient way involves Perl, and no Jasspa at all. find calling Perl (this is all one line), replace Galations with Galatians : find ./ -type f
          Message 4 of 4 , Feb 10, 2004
          • 0 Attachment
            The really efficient way involves Perl, and no Jasspa at all.

            'find' calling Perl (this is all one line), replace "Galations" with
            "Galatians":
            find ./ -type f -name '*.htm*' -exec perl -pi -e
            's/Galations/Galatians/g' {} \;

            Pure Perl solution, search and replace <strong> with <b> in all *.html
            files (saves original files as *.html.bak):
            perl -pi.bak -e 's/strong>/b>/gi;' *.html

            Perl runs well under Windows, so you could use it even if you don't have
            'find' nor Cygwin installed.

            -Th



            Steven Phillips wrote:

            > There are two other solutions to solving this problem and which one to use
            > depends on the scale of the replacing:
            >
            > 1) For a small number of replacements I tend to use the rgrep (recursive grep)
            > command to find all the strings to be replaced in all the directory-tree. This
            > command is available on windows as long as you make cygwin's 'find' first in
            > the path (see help page). I then create a simple key-board macro which
            > typically uses the get-next-line and '-1 replace-string ...' commands to do
            > the actual replacement. This is a very quick and easy solution.
            >
            > 2) I once decided that in a large library (thousands of lines of code split
            > across many directories) that its definition and use of int32 was not a good
            > idea (caused compile error on AIX) so should be changed to xxInt, float32 ->
            > xxFloat, same for int8, float64 and then theres all the functions that have
            > types in their name etc etc. I ended up with a list of 100+ changes to be
            > made - rather a large headache.
            >
            > It was for this reason I created the replace-all-pair command. I started by
            > concentrating on the first compiled directory and created a list of
            > replacement pairs which up-graded that directory AND made sure that that
            > directory still worked/compiled. I then moved onto the next, used
            > replace-all-pair on the existing list and then added to the list any other
            > changes need for that directory. And then I moved onto the next and the next.
            >
            > The process did not take long and once complete I had a complete list of all
            > the changes made in a form that meant I could easily upgrade all programs that
            > used the library (using replace-all-pair obviously). Again this approach is
            > also available on windows and only requires access to a reasonable grep
            > command, see help page on the command. One further tip, when adding to the
            > replacement list I used the Edit -> Narrow To feature to exclude replacement
            > pairs that had already been applied to avoid re-applying them as this could
            > lead to unwanted side effects. If you use this approach please backup your
            > files first as changes tend to be permanent!
            >
            > Steve
            >
            >
            >>Subject: [jasspa] Search and Replace in all files
            >>From: Jon Green <jon@...>
            >>Date: Tuesday, February 10, 2004, 7:59:09 PM
            >>To: jasspa@yahoogroups.com
            >>salmankhilji wrote:
            >>
            >>>I would like to replace a text string with another inside the entire
            >>>directory. ME should recursse into all sub-directories and find all
            >>>*.[hHcC]* files and carry out the replacement.
            >>>
            >>>There is the command replace-all-string, but I don't want to manually
            >>>enter a list of all the files in which the replacement should occur.
            >>>
            >>>I could use the find command but then I need a way to carry out the
            >>>repalcement using the command line. I tried something like this on
            >>>one file but it didn't work.
            >>>
            >>>me "@replace-all-string" ContentStream Stream opCurveY.cpp
            >>>
            >>>Can someone please help me
            >>>
            >>>Salman
            >>>
            >>>
            >
            >
            >>Well running on UNIX then you can do the following
            >
            >
            >>(query-)replace-all-string
            >>Replace all: AAA
            >>Replace [AAA] with: BBB
            >>In Files: *.cpp */*.cpp */*/*.cpp */*/*/*.cpp
            >
            >
            >>Add as many stars as you need levels.
            >
            >
            >>If you are running on Windows then this will depend what
            >>kind of grep you have and how it behaves with '*'s
            >
            >
            >>Must admit would be nicer with find, but does the job.
            >
            >
            >>Jon.


            --
            Thomas Hundt
          Your message has been successfully submitted and would be delivered to recipients shortly.