Unix HP-UX ksh rekursives Suchen und Ersetzen

Unix HP-UX ksh rekursives Suchen und Ersetzen

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 -ifolgendermaß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

verwandte Informationen