PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shell script dateien suchen und bearbeiten



derdirk
05-06-2005, 12:35
hallo,

ich versuche mit einem shell script bestimmte dateien zu suchen und auf treffer mehrere kommandos abzusetzen.

hier mein verwendetes script:


for FILE in `find . -type f \( -name "*.cpp" -o -name "*.h" \)`
do
cp "$FILE" "$FILE.temp"
tr -s "\r" < "$FILE.temp" > "$FILE"
rm "$FILE.temp"
done

das script funktioniert gut... solange im gefundenen pfad bzw. dateinamen keine "leerzeichen" enthalten sind !!!

denn hier splitted das "for" kommando jedes leerzeichen auf, so wird z.b. aus

./neuer ordner/test.cpp

./neuer
ordner/test.cpp

und der cp, tr, rm findet natürlich diese dateinamen nicht :eek: hat jemand eine idee wie man das lösen kann ???

vielen dank im voraus ;)


ciao dirk

nul
05-06-2005, 14:14
Willst du nur dateien bearbeiten, dann kontrollier doch das mit -f glaubh ich geht das.

peschmae
05-06-2005, 15:33
Mit

IFS="
"

vor der Schleife ist die Sache normalerweise gegessen. Das zwischen dem " und dem " ist übrigens ein Enter und nix mehr/weniger.

MfG Peschmä

Hans-Georg Normann
05-06-2005, 16:14
Warum noch die FOR Schleife?
find . -type f \( -name "*.cpp" -o -name "*.h" \) -exec \
tr -s "\r" < {} > {}.temp; \
cp {}.temp {}; \
rm {}.temp \;

Ich habe es so nicht geprüft, denke aber das es richtig ist. Auf jeden Fall muss die -exec sequenz mit \; abgeschlossen werden.

/*EDIT
Post # 555, darauf sollte man sich mal einen Gammeldansk genehmigen! Prost!
*/

Hans

peschmae
05-06-2005, 17:18
Warum noch die FOR Schleife?

Stimmt. Irgendwie hatte ich da das Gehirn abgeschaltet :D



/*EDIT
Post # 555, darauf sollte man sich mal einen Gammeldansk genehmigen! Prost!
*/


Gratuliere! Aber was ist ein Gammeldansk?

MfG Peschmä

Hans-Georg Normann
05-06-2005, 17:53
....Aber was ist ein Gammeldansk?
Das ist so ziemlich das einzigst hochprozentige Gebräu, was geniessbar ist. Da ich in einem dänischen Konzern arbeite, gehört dieser Kräuterbitter zum Inventar. Ab einem gewissen Pegel fällt das Shellscripten dann leicher (oder man spürt den Schmerz nicht mehr) :D

Hans

derdirk
05-06-2005, 18:00
Gratuliere! Aber was ist ein Gammeldansk?
schaust du hier: http://www.gammeldansk.dk/composite-58.htm

also erstmal vielen dank für eure antworten ;)

funktioniert mit dem IFS ( kannte ich noch gar nicht... ist aber toll !!! )

auch die Lösung von "HGN" gefällt mir gut... ich hatte es jetzt noch so hinbekomen:

find . -type f \( -name "*.cpp" -o -name "*.h" \) | while read FILE
do
cp "$FILE" "$FILE.dirk"
tr -s "\r" < "$FILE.dirk" > "$FILE"
rm "$FILE.dirk"
done
dem "while read" sind anders als dem "for" leerzeichen egal ;)


ciao dirk