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'
Related videos on Youtube
Comments
-
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 almost 14 yearsIt should be -0 - it matches up with -print0 in the find - edited the post.
-
John over 4 yearsI 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?