2017-12-16 5 views
1

ich für bash Code Suche alle <title>XXX</title> in allen .html Dateien <title>XXX - YYY $Date</title>Zeichenfolge ersetzen und beinhalten Datum innerhalb aller .html-Dateien innerhalb eines Verzeichnisses

zu ersetzen, was ich mit aufkam, mit sed ist :

sed -i "s/</title>/ - YYY 'date'/g" /home/mirror/* 

Dies ist jedoch nicht implementiert die .html Anforderung und ich kann sie nicht arbeiten, ich bin entweder

sed: no imput files 
01 bekommen

oder

-bash: s/</title>/ - YYY 'date'/g: No such file or directory 

Die Struktur ist:

/home/mirror/ 
├── images 
├── archive 
│ └── index.html 
│ └── 2.html 
├── index.html 
├── 2.html 
├── style.css 
└── scripts.js 

Wie kann ich das tun?

+0

siehe auch 1) https://stackoverflow.com/questions/5864146/use-slashes-in-sed-replace 2) https://stackoverflow.com/questions/7680504/sed-substitution-with-bash- Variablen 3) https://stackoverflow.com/questions/1583219/awk-sed-how-to-do-a-recursive-find-replace-of-a-string/1585810 – Sundeep

Antwort

3

Sie müssen find durch die Verzeichnisse rekursiv:

find /home/mirror -name '*.html' -exec sed -i "[email protected]</title>@ - YYY $Date</title>@g" {} + 

Hinweis I ersetzt „‚date‘“ mit „$ Date“, wie das ist, was Sie sagen, Sie hinzufügen wollen. Ich benutze auch @ anstelle von / als sed s Trennzeichen, um Störungen durch die </title> Teile zu vermeiden.

+2

danke, das funktionierte genau so, wie ich brauchte & Ich habe heute ein bisschen mehr gelernt. Ich wünsche dir einen schönen Tag John Zwinck :) – Jackar

Verwandte Themen