Suchen und Ersetzen von Text in mehreren Dateien

Suchen und Ersetzen von Text in mehreren Dateien

Ich möchte wissen, wie ich wie in Notepad++ im verlinkten Tutorial einen bestimmten Text in mehreren Dateien suchen und ersetzen kann.

z.B:http://cybernetnews.com/find-replace-multiple-files/

Antwort1

Hier verwende ich sed, um jedes Vorkommen des Wortes „cybernetnews“ durch „cybernet“ in jeder Datei mit der Erweiterung c im Verzeichnis /home/user/directory/ zu ersetzen.

find /home/user/directory -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;

Eine allgemeinere Variante, bei der Sie rekursiv vom Ausführungsverzeichnis aus suchen und nur mit regulären, lesbaren und beschreibbaren Dateien arbeiten:

find ./ -type f -readable -writable -exec sed -i "s/cybernetnews/cybernet/g" {} \;

Antwort2

Der Stream-Editor sed ist ein leistungsstarkes Dienstprogramm für diese Art von Arbeit und meine erste Wahl. Wenn Sie dies jedoch von einem gewöhnlichen Texteditor aus mit einer nativen Ubuntu-basierten Anwendung tun möchten, würde ich Ihnen empfehlen, einen Blick auf Jedit zu werfen. Es ist in den Repositories verfügbar und kann durch Eingabe in Ihre Konsole installiert werden:

sudo apt-get install jedit

Starten Sie jedit, klicken Sie auf das Menüelement „Suchen“, klicken Sie in der Menüliste auf das Element „Im Verzeichnis suchen“. Das folgende Dialogfeld wird angezeigt:

Jedit-Dialogfeld „Im Ordner suchen“

Dies ähnelt Notepad++ und macht dasselbe. Ich glaube, das ist, was Sie wollen.

Antwort3

Eine weitere GUI-Option istregex: Regexxer-Screenshot

Antwort4

Prüfen Sie mitGeany, es ist der perfekte NPP-Ersatz für Linux. Sie können genau das tun und zusätzlich reguläre Ausdrücke verwenden.

verwandte Informationen