
Binomico
Grünschnabel
Guten Tag allerseits,
ich suche verzweifelt nach einer Lösung für mein Problem. Meine Zielsetzung ist wie folgt:
Ich möchte in einem Verzeichnis rekursiv alle Dateien (falls möglich auch Ordner), auf die die Definition zutrifft ändern, eben per bash.
Definition:
ich.bin.die.s12.beispieldatei.xml > Ich.Bin.Die.S12.Beispieldatei.xml
ich.BIN.auch.eine.beispieldatei.xml > Ich.BIN.Auch.Eine.Beispieldatei.xml
Nun das Script funktioniert, was die Dateien in dem Verzeichnis angeht, in dem es ausgeführt wird, perfekt. Die rekursive Auflistung ist das Problem! Mit find hab ich es nicht geschafft ... :/ dazu sei gesagt, dass ich gerade die ersten Schritte mit unixbasierten Betriebssystemen/Scripten mache :-)
Viele Grüße
ich suche verzweifelt nach einer Lösung für mein Problem. Meine Zielsetzung ist wie folgt:
Ich möchte in einem Verzeichnis rekursiv alle Dateien (falls möglich auch Ordner), auf die die Definition zutrifft ändern, eben per bash.
Definition:
ich.bin.die.s12.beispieldatei.xml > Ich.Bin.Die.S12.Beispieldatei.xml
ich.BIN.auch.eine.beispieldatei.xml > Ich.BIN.Auch.Eine.Beispieldatei.xml
Nun das Script funktioniert, was die Dateien in dem Verzeichnis angeht, in dem es ausgeführt wird, perfekt. Die rekursive Auflistung ist das Problem! Mit find hab ich es nicht geschafft ... :/ dazu sei gesagt, dass ich gerade die ersten Schritte mit unixbasierten Betriebssystemen/Scripten mache :-)
Code:
#!/bin/bash
for FILE in `ls -1`
do
NUMBEROFDOTS=`echo ${FILE} | gawk '{split($0,myarray,".") ; print asort(myarray)}'`
if([ ${NUMBEROFDOTS} -eq 1 ]) then
echo "!! Invalid filename: ${FILE}"
else
LASTDOT=`expr ${NUMBEROFDOTS} - 1`
FILENAME=`echo ${FILE} | cut -d "." -f -${LASTDOT}`
EXTENSIONOLD=`echo ${FILE} | cut -d "." -f ${NUMBEROFDOTS}`
EXTENSIONNEW=`echo ${EXTENSIONOLD} | gawk '{print tolower($0)}'`
if([ ${EXTENSIONOLD} == "sh" ]) then
continue 2;
else
mv "${FILENAME}.${EXTENSIONOLD}" "`echo $FILENAME | perl -pe 's/(^|\.)([a-z])/$1\u$2/g;'`.${EXTENSIONNEW}"
fi
fi
done
Viele Grüße