Ich muss eine Zeichenfolge in einer Menge von Dateien in einem Ordner ersetzen, mit nur ssh
Zugang zum Server. Wie kann ich das tun?
Antworten
Zu viele Anzeigen?
Djacomo
Punkte
505
Ignorant
Punkte
2222
Angenommen, Sie wollen nach der Zeichenkette search
und ersetzen Sie es durch replace
über mehrere Dateien hinweg, ist dies meine kampferprobte, einzeilige Formel :
grep -RiIl 'search' | xargs sed -i 's/search/replace/g'
Kurze Erklärung von grep:
-R
- rekursive Suche-i
- unabhängig von Groß- und Kleinschreibung-I
- Überspringen von Binärdateien (Sie wollen Text, richtig?)-l
- eine einfache Liste als Ausgabe drucken. Benötigt für die anderen Befehle
Die grep-Ausgabe wird dann (über xargs) an sed weitergeleitet, das zum Ersetzen von Text verwendet wird. Die -i
Flagge wird die Datei direkt geändert. Entfernen Sie es für eine Art "Trockenlauf"-Modus.
Ilya Suzdalnitski
Punkte
51083
gopiariv
Punkte
434
jiasir
Punkte
121
1 Stimmen
Wenn Sie es vorziehen, Notepad++ anstelle der Befehlszeile zu verwenden, fand ich dies sehr hilfreich: superuser.com/a/1003801/74576