Dateien in unterverzeichnissen bearbeiten

Antworten
Nachricht
Autor
MyFiltt

Dateien in unterverzeichnissen bearbeiten

#1 Beitrag von MyFiltt » 15. Jan 2009 16:04

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: Alles auswählen

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

Benutzeravatar
Lateralus
prolinux-forum-admin
Beiträge: 1238
Registriert: 05. Mai 2004 7:35

#2 Beitrag von Lateralus » 15. Jan 2009 20:03

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

Code: Alles auswählen

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

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#3 Beitrag von Janka » 15. Jan 2009 23:57

Es gibt auch "dirname".

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

MyFiltt

#4 Beitrag von MyFiltt » 17. Jan 2009 17:38

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

Antworten