Wie kann ich mit einer Shell wie bash oder zshell ein rekursives Suchen und Ersetzen durchführen? Mit anderen Worten, ich möchte jedes Vorkommen von "/ path / to / folder" durch "/ other / dir" in allen Dateien in diesem Verzeichnis und seinen Unterverzeichnissen ersetzen.
Dies ist im Wesentlichen die gleiche Frage wie das Original aus diesem Namen, aber ich muss wissen, was passiert, wenn der zu ersetzende Text Schrägstriche enthält, wie in den obigen Beispielen? Kann ich meinen Code einfach an der Stelle zum Suchen / Ersetzen in die Argumente einfügen? Oder muss ich noch was machen ???
All dies wird über ssh auf den Ubuntu-Server erledigt.
Vielen Dank!
linux
command-line
bash
find-and-replace
Elliot Labs
quelle
quelle
Antworten:
Verwenden
find
undsed
:awk
oderperl
anstelle vonsed
- auswählen, was Sie möchten.find
um die Datei einzuschränken, mit der Sie arbeiten & cquelle
find html -name ".htaccess" -print0 | xargs -0 sed -i `` -e 's,/dir/with/a/lot/of/subs,/other/dir/with/some/more/subs,g'