use SED recursively in linux?

18,578

Solution 1

find . -type f -print0 | xargs -0 sed -i 's/href=\"1\//href=\"\/1\//g'

Solution 2

Per https://stackoverflow.com/a/5130044/833771, if the target directory is a Git or SVN root, you should use: find . -not \( -name .svn -prune -o -name .git -prune \) -type f -print0 | xargs -0 sed -i 's/href=\"1\//href=\"\/1\//g'

Share:
18,578

Related videos on Youtube

John
Author by

John

We consult and build stuff out of Toronto!

Updated on September 17, 2022

Comments

  • John
    John over 1 year

    I want to implement the following command recursively

    sed -i 's/href=\"1\//href=\"\/1\//g' ./*
    

    so that it replaces all href="1 with href="/1 in all sub-directories. Is there a flag I can add to this command to achieve the results I want?

  • James
    James almost 14 years
    It should be -0 - it matches up with -print0 in the find - edited the post.
  • John
    John over 4 years
    I find that find . -type f | xargs sed -i 's/href=\"1\//href=\"\/1\//g' can produce the same results. Will there be pitfalls to this approach?