Page 1 of 1

Dateien in unterverzeichnissen bearbeiten

Posted: 15. Jan 2009 16:04
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

Posted: 15. Jan 2009 20:03
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.

Posted: 15. Jan 2009 23:57
by Janka
Es gibt auch "dirname".

Janka

Posted: 17. Jan 2009 17:38
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