Dateien in der Shell bearbeiten

closeDieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!

Es kommt öfter vor, dass man schnell in mehreren Dateien etwas ändern möchte, Linux sieht für diesen Fall “sed” vor.

z.B.:

sed -i 's/Ubuntu/Windows/g' test.txt

Alternativ kann man dies auch mittels Perl realisieren.

find . -name '.cfg' | xargs perl -pi -e 's/alt/neu/g'

Mit dem zuvor genannten Befehl kann man in allen Dateien, ab den aktuellen Verzeichnis, welche auf “.cfg” enden, “neu” gegen “alt” ändern. Ggf. kann man den Befehl auch noch in der .bashrc aufnehmen, um diesen noch einfacher und schneller einsetzten zu können. Somit muss man nur noch “replace Pfad alt neu” z.B.:

sudo replace /etc/ host_alt host_neu
# mehrere Dateien gleichzeitig aendern
replace()
{
if [ $3 ]; then
    find $1 -type f | xargs perl -pi -e 's/$2/$3/g'
else
    echo "Missing argument"
    echo "example: replace /wo alt neu"
fi
  • http://suckup.de Voku
    find . -name '.cfg' | xargs perl -pi -e 's/alt/neu/g' 

    -> da fehl noch ein “*” ;)

    find . -name '*.cfg' | xargs perl -pi -e 's/alt/neu/g'