Diese Frage hat hier bereits Antworten :
Kommentare
- Sie möchten sed, nicht grep. Außerdem verwenden Sie ' " intelligente " Anführungszeichen, sodass grep nach den Anführungszeichen sucht Literalzeichenfolge
“string”
, einschließlich der Anführungszeichen. Sie möchten"string"
(oder wahrscheinlich sogar'string'
, es sei denn, Sie planen die Parametererweiterung im Suchbegriff). -
grep
wird nicht ' verwendet, um Zeichenfolgen zu ersetzen. Es ' wird zum Suchen von Zeichenfolgen verwendet. Um sie zu ersetzen, benötigen Siesed
oderawk
. - Also wäre es so etwas wie
- sed –recursive –ignore-case " Zeichenfolge ", " Ersatz -string "
- Verwandte Themen: Suchen und Ersetzen mit grep (nicht sed) – jedoch Sie können
grep --recursive --files-with-matches
verwenden, um eine Liste von Dateinamen zu erstellen, die ansed
<übergeben werden sollen / ul>
Antwort
Versuchen Sie diesen Befehl
grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g"
Sie können Versuchen Sie find
und sed
find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \;
Kommentare
- Ersetze ich " matchstring " durch die neue oder alte Zeichenfolge und was, wenn ich möchte Um dies aus dem Stammverzeichnis des Servers zu tun?
- Zum Beispiel, wenn ich " wavbyte " mit " gitship " von Das Stammverzeichnis des Ubuntu-Servers wäre:
- find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
- Richtig, aber Wavbyte befindet sich an vielen verschiedenen Stellen auf dem Server. Wie werde ich all diese Orte auswendig lernen und dann von Hand hineingehen und zum Gitship wechseln?
- Lassen Sie uns diese Diskussion im Chat fortsetzen .