Gibt es eine Möglichkeit, eine rekursive Testsuche auszuführen und mit sed zu ersetzen , bevor Sie es tatsächlich ausführen? Ich möchte nur die Ergebnisse ausdrucken, bevor ich das Suchen und Ersetzen tatsächlich durchführe. So etwas wie das Wiedergeben der Ergebnisse von,
grep -rl term1 . |xargs sed -i -e 's/term1/term2/'
Akzeptierte Antwort:
Sie könnten sed ausführen ohne -i und schrittweise mit less durch die Ausgabe gehen
grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less
Führen Sie dann sed aus mit -i.bak um Backups zu erstellen, die Sie später vergleichen können
grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct
Bearbeiten: Verwenden Sie, wie im Kommentar vorgeschlagen, grep --null | xargs -0 . Dies führt dazu, dass Dateinamen mit dem Null-Byte abgeschlossen werden, was es sicher für Dateinamen mit ungewöhnlichen Zeichen wie Zeilenumbruch macht. Ja, n ist ein gültiges Zeichen in einem Unix-Dateinamen. Die einzigen verbotenen Zeichen sind Schrägstriche / und das Nullzeichen