Hallo an alle,
ich da mal ein kleines Skript geschrieben um Strings in vielen Textdateien mit Unterverzeichnissen zu ändern. Warum? Der Grund war ein Schreibfehler in einer Webseite. Dieser zog sich dank copy-and-past über mehrer Dateien in verschieden Unterverzeichnissen hin. Ein Änderung aller Dateien von Hand hätte etwas länger gedauert (ca. 100 Dateien). Aus diesem Grund ist das Skript entstanden.
Jetzt wird der eine oder andere sagen "das ist aber umständlich, das kann ich viel besser". Gerne dann zu verbessert es ;-). Diese Version ist in ca. 20 Minuten mit Test entstanden.
Aber vielleicht kann es ja doch jemand gebrauchen ;-)
Gruß
Stefan
ich da mal ein kleines Skript geschrieben um Strings in vielen Textdateien mit Unterverzeichnissen zu ändern. Warum? Der Grund war ein Schreibfehler in einer Webseite. Dieser zog sich dank copy-and-past über mehrer Dateien in verschieden Unterverzeichnissen hin. Ein Änderung aller Dateien von Hand hätte etwas länger gedauert (ca. 100 Dateien). Aus diesem Grund ist das Skript entstanden.
Jetzt wird der eine oder andere sagen "das ist aber umständlich, das kann ich viel besser". Gerne dann zu verbessert es ;-). Diese Version ist in ca. 20 Minuten mit Test entstanden.
Code:
#!/bin/bash
clear
mkdir /tmp/aendern_tmp
echo
while [ -z "$QUELLE" ]
do
echo -n "Bitte Quelle eingeben (QUIT für Ende): "
read QUELLE
if [ $QUELLE = "QUIT" ]
then
exit 1
fi
if [ ! -d $QUELLE ]
then
echo
echo
echo "$QUELLE ist kein Verzeichnis. Die Quelle muss ein Verzeichnis sein."
echo
exit 2
fi
done
echo
while [ -z "$ALT" ]
do
echo -n "Bitte alten Wert eingeben : "
read ALT
done
echo
while [ -z "$NEU" ]
do
echo -n "Bitte neuen Wert eingeben : "
read NEU
done
for i in `grep -lr $ALT $QUELLE`
do
echo "DATEI $i wird geändert"
DATEI=`basename $i`
PFAD=`dirname $i`
if [ -f $i ]
then
sed s/$ALT/$NEU/g $i > /tmp/aendern_tmp/$DATEI
mv /tmp/aendern_tmp/$DATEI $PFAD/$DATEI
fi
done
rmdir /tmp/aendern_tmp
Aber vielleicht kann es ja doch jemand gebrauchen ;-)
Gruß
Stefan