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?

find . -type f -print0 | xargs -0 sed -i 's/href=\"1\//href=\"\/1\//g'
| improve this answer | |
  • It should be -0 - it matches up with -print0 in the find - edited the post. – James Aug 20 '10 at 16:46
  • 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? – John Dec 7 '19 at 16:54

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'

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.