Ich möchte wissen, wie ich einen bestimmten Text in mehreren Dateien wie in Notepad ++ im verknüpften Lernprogramm finden und ersetzen kann.
text-editor
Faruk Uzun
quelle
quelle
Antworten:
Hier benutze ich sed, um jedes Vorkommen des Wortes "cybernetnews" durch "cybernet" in jeder Datei mit der Erweiterung "c" im Verzeichnis "/ home / user / directory /" zu ersetzen.
Eine allgemeinere Variante, bei der Sie rekursiv aus dem Ausführungsverzeichnis suchen und nur mit regulären, lesbaren und beschreibbaren Dateien arbeiten:
quelle
cyber net news
? Wie kann ich das konvertierencyber net
?sed -i -e "s/cyber\snet\snews/cyber net/g"
Der Stream-Editor sed ist ein leistungsstarkes Dienstprogramm für diese Art von Arbeit und meine erste Wahl. Wenn Sie dies jedoch in einem normalen Texteditor mit einer Ubuntu-basierten nativen Anwendung tun möchten, sollten Sie sich Jedit ansehen , Es ist in den Repositorys verfügbar und kann installiert werden, indem Sie Folgendes in Ihre Konsole eingeben:
Starten Sie jedit, klicken Sie auf den Menüpunkt Suchen, klicken Sie in der Menüliste auf den Menüpunkt Im Verzeichnis suchen. Der folgende Dialog wird angezeigt:
Dies ähnelt dem von Notepad ++ und macht dasselbe, ich glaube, das ist, was Sie wollen.
quelle
sed
.Eine andere GUI-Option ist regexxer :
quelle
Ersetzt alle Vorkommen von altem Text durch neuen Text in allen Dateien im aktuellen Ordner. Sie müssen jedoch alle Perl-Sonderzeichen im alten und neuen Text mit dem Backslash maskieren.
quelle
Fragen Sie bei Geany nach , es ist der perfekte NPP-Ersatz für Linux. Sie können genau das tun und Sie können Regex verwenden.
quelle
Ich habe ein kleines Skript für genau dieses Ding geschrieben. Wenn Sie nur die Grundlagen benötigen und nicht mit sed usw. vertraut sind, schauen Sie hier: http://www.csrdu.org/nauman/2010/12/30/bash-script-to-find-and-replace-in -ein-satz-von-dateien /
Das Skript lautet wie folgt:
quelle
Sie können dieses Skript verwenden, Code kopieren und eine Datei erstellen
find_and_replace_in_files.sh
.Ich habe es ein wenig modifiziert; Bitte sag mir deine Meinung.
quelle
Ein anderes Programm ist Searchmonkey .
quelle
arbeitet für mich auf Fedora
quelle
sed
Instanzen ausgeführt! Es ist also viel schneller in Bezug auf die CPU-Zeit. Da die Dateizugriffszeit begrenzt wäre, denke ich, dass die Uhrzeit nicht viel schneller ist, aber eine geringere Systemlast ergibt. Notexargs
fügt wie Hunderte von Dateinamen in diesed
Befehlszeile eines einzelnen Befehls ein und füllt die verfügbare Puffergröße basierend auf der Länge der Pfade.+
statt\;
infind
, nicht wahr?xargs
, aber du hast recht; vonman find
:-exec command {} +
: ...The command line is built in much the same way that xargs...
. Erinnert mich an Befehlszeilen vongit filter-branch
...;)Eine sehr einfache Lösung: Ersetzen Sie in allen
*.txt
Dateien im Ordnerstring_1
durchstring_2
:quelle
sed -i 's/string_1/string_2/g' $(grep -rEl 'string_1' ./)