Ich versuche, in HP-UX eine rekursive Suchen- und Ersetzungsfunktion durchzuführen, und mir fehlt etwas.
Was ich im Moment habe:
find . -name "*.java" | xargs sed 's/foo/bar/g'
Ich weiß, dass das Problem darin besteht, dass die Datei nicht inline ersetzt wird. Ich glaube, auf anderen Betriebssystemen gibt es ein Flag -i, aber in meiner HP-UX-Version scheint es das nicht zu geben.
Irgendwelche Vorschläge?
Antwort1
Sie könnten das Fehlende -i
folgendermaßen umgehen (ungetestet):
for i in `find . -name "*.java"`; do cp $i /tmp/$$; sed 's/foo/bar/g' < /tmp/$$ > $i;done
Antwort2
Sie können immer verwendened
find . -name "*.java" | while IFS= read -r file; do
ed "$file" <<ED_COMMANDS
%s/foo/bar/g
w
q
ED_COMMANDS
done