Batch-ersetzen-text in text-Datei (Linux/OSX Commandline)
Habe ich Hunderte von Dateien, wo ich ändern muss einen Teil von seinem text.
Zum Beispiel, ich will ersetzen Sie jede Instanz von "http://" mit "rtmp://" .
Die Dateien haben die .txt-Endung und sind verteilt auf mehrere Ordner und Unterordner.
Ich im Grunde Suche eine Möglichkeit/script, dass geht Trog jeden einzelnen Ordner/Unterordner und jede Datei einzeln, und wenn es findet innerhalb dieser Datei die vorkommen von "http" zu ersetzen mit "rtmp".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun mit einer Kombination von
find
undsed
:So erstellen Sie backups von einzelnen Dateien. Ich schlage vor, Sie Lesen ein paar, um sicherzustellen, dass Sie haben, was Sie wollen, Sie können dann löschen Sie Sie mit
-name
argumentfind
ich habe bearbeitet es infind . -type f -name '*.txt' -exec sed -i.bak 's|http://|rtmp://|g' {} +
Hier ein
zsh
- Funktion, die ich verwenden, um dies zu tun:Es macht Gebrauch von der netten Perl-Mechanismus zum erstellen einer backup-Datei, und ändern Sie die benannte Datei. Sie können das oben Durchlaufen-Dateien so:
oder einfach nur legte es in eine triviale
#!/bin/zsh
Skript (ich benutze zsh für die mächtigen Platzhalter)