Ich habe ein Verzeichnis voller Textdateien. Mein Ziel ist es, Text an den Anfang und das Ende aller anzuhängen. Der Text am Anfang und am Ende ist für jede Datei gleich.
Basierend auf dem Code, den ich aus dem Web erhalten habe, ist dies der Code zum Anhängen am Anfang der Datei:
echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt
Dies ist der Code zum Anhängen an das Ende der Datei. Ziel ist es, den Text };
am Ende jeder Datei einzufügen:
echo "};" >> $BASEDIR/Translations/Javascript/*.txt
Die Beispiele, aus denen ich schöpfte, betrafen die Bearbeitung einzelner Akten. Ich dachte, ich würde versuchen, mit dem Platzhalter mehrere Dateien zu bearbeiten *.txt
.
Ich könnte auch andere Fehler machen. Wie füge ich in jedem Fall Text an den Anfang und das Ende mehrerer Dateien an?
quelle
-i
anstelle dieser Dateisubstitution funktioniert nicht , es wird nur auf stdout gedruckt.Versuchen Sie es mit
ex
:wo Befehle sind:
bufdo!
führt die folgenden Befehle für jeden geöffneten Puffer / jede geöffnete Datei aus (Hinweis: Es handelt sich nicht um POSIX )1s/^/HEAD/
- FügtHEAD
Text in die erste Zeile am Zeilenanfang ein$s/$/TAIL/
- fügtTAIL
Text an die letzte Zeile am Ende der Zeile anund Argumente sind:
-s
- Silent / Quick-Modus-cxa
- Alle geöffneten Puffer / Dateien speichern und beenden*.foo
- alle Dateien im aktuellen Verzeichnis (*
) mitfoo
Erweiterung, Nutzung**/*.foo
für Rekursivität (nach der Aktivierung globstar:shopt -s globstar
)quelle
Mit
gnu awk
, unter Verwendung derinplace
Erweiterung undBEGINFILE
/ oderENDFILE
:quelle
Hat auch das Recht zu sein (mit Ergebnissen in
.out
Dateien):Eine weitere, aufwändigere Variante - Quelldateien, die durch das Ergebnis ersetzt wurden:
quelle
Perl Einzeiler zur Rettung:
quelle