Die Klammern werden als Teil der Syntax für reguläre Ausdrücke behandelt (sie zeigen an, dass ihr Inhalt als Gruppe behandelt werden sollte) und nicht als zu vergleichende Literalzeichen. Um dem Parser für reguläre Ausdrücke zu sagen, dass er sie als wörtliche Zeichen behandeln soll, können Sie sie mit Backslashes umgehen:
find /Users/Ad//Desktop/Project/src/ -type f -name '*.java' -exec perl -pi -w -e 's/getGreenObject\(\)/newObject("green")/g;' {} \;
Nun, haben Sie ein Backup von, bevor dies geschehen ist, so dass Sie zurückgehen und es noch einmal versuchen können? Wenn Sie solche Massenänderungen vornehmen, sollten Sie immer sicherstellen, dass Ihre Sicherung auf dem neuesten Stand ist (Sie haben eine Sicherung, oder?), Und führen Sie auch einen kleinen Test durch, bevor Sie sie auf Ihrer Hauptcodebasis loslassen.
Wenn Sie nicht über ein Backup verfügen, zu dem Sie zurückkehren können, können Sie es wahrscheinlich folgendermaßen beheben:
find /Users/Ad//Desktop/Project/src/ -type f -name '*.java' -exec perl -pi -w -e 's/newObject\("green"\)\(\)/newObject("green")/g;' {} \;
Beachten Sie, dass ich wahrscheinlich gesagt habe. Hier gelten die gleichen Empfehlungen: Stellen Sie zunächst sicher, dass Sie über ein aktuelles Backup verfügen, und testen Sie es zuerst an einigen Dateien. Ich bin nicht dafür verantwortlich, wenn Ihre Codebasis dadurch irreversibel zerstört wird.