Dateien in unterverzeichnissen bearbeiten

Post Reply
Message
Author
MyFiltt

Dateien in unterverzeichnissen bearbeiten

#1 Post by MyFiltt »

Hallo,

ich suche alle Dateien unterhalb von /export mit der Endung .txt. Diese möchte ich mit einem filter bearbeiten und die Ausgabe in das gleiche Verzeichnis stellen, in dem die Datei liegt, und zwar mit dem gleichen Dateinamen, nur einer anderen Endung.
Das Problem ist, wie bekomme ich den Pfad unbekannter Unterverzeichnistiefe ausgefiltert? Ich bräuchte also das Gegenteil zu basename.
ODer vielleicht die bekannte Endung mit sed filtern?

Soweit bin ich, klappt aber natürlich nicht.

Code: Select all

find . -iname \*.txt | while read LINE; do
   cat ${LINE} | /bin/myfilter > `basename ${LINE} .txt`.new
done

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#2 Post by Lateralus »

Wenn ich richtig verstanden habe, willst du eigentlich den gesamten Dateinamen nur ohne Endung?!

Code: Select all

name="bla.txt"
new_name="${name%.txt}.new"
echo "$new_name"
Sollte dich weiterbringen.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#3 Post by Janka »

Es gibt auch "dirname".

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

MyFiltt

#4 Post by MyFiltt »

Super vielen Dank euch beiden. "dirname" kannte ich nicht, den kann man häufiger mal gebrauchen, und die Variablensubsitution verstehe ich zwar nicht, klappt aber wunderbar und macht einen Einzeiler aus der ganzen Sache, da ich nicht mit "dirname" und "basename" arbeiten muß. Gut, wäre auch in einer gegangen, dann aber schon fiese unübersichtlich.

Danke noch mal, hat sehr geholfen

Post Reply