Datum: 2004-05-13
Quelle: suse-linux
In bestimmten Dateien soll "web1" durch "chaos" ersetzt werden. Ich habe zu meinen Vorschlägen von 2004 noch ein paar Varianten ergänzt, die aus heutiger Sicht passender sind.
# 1. benannte Dateien / named files for f in .shtml .html .cgi .pl; do sed 's/web1/chaos/g' "$f" >"${f}.tmp" && mv "${f}.tmp" "$f" done # 2. nach Endung rekursiv / depending on suffix recursive for suffix in .shtml .html .cgi .pl; do find /directory -name "*$suffix" -print | while read f; do sed 's/web1/chaos/g' "$f" >"${f}.tmp" && mv "${f}.tmp" "$f" done done # 1. neu / new sed -i 's/web1/chaos/g' file1.html file2.html file3.cgi; # 2. neu / new for suffix in .shtml .html .cgi .pl; do find /directory -name "*$suffix" -print | \ xargs sed -i 's/web1/chaos/g' done
Die "alten" Varianten rufen je Datei einen sed auf, dessen Ergebnis in einer temporären Datei gespeichert wird. Diese wird bei Erfolg zurück in den alten Dateinamen umbenannt. Die beiden aktuellen Varianten nutzen die Option -i des sed, die in-Place-Editieren erlaubt und verarbeiten mehrere Dateien je Aufruf.