PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiendung



27-03-2001, 10:59
Hallo,

wie kann man alle Dateiendungen wegschneiden und die Endung bak oder org dranhaengen??

Die Programmiersprache ist mir egal solange man sie in der Shell ausfuehren kann!

Vielen Dank schon mal im Voraus!! http://www.linuxforen.de/ubb/smile.gif

Tosk
27-03-2001, 11:41
hi cstux,

die funktion basename() ist genau das, was Du suchst... man basename zeigt Dir auch, wie Du sie einsetzt.

Tosk

thommy
27-03-2001, 13:06
Vielleicht mein er auch so etwas:

<pre>
user&gt; var=blabla.txt
user&gt; echo $var
blabla.txt
user&gt; echo ${var%.*}
blabla
user&gt; echo ${var%.*}.bak
blabla.bak
</pre>

Thomas

27-03-2001, 13:28
Mit var gibt es leider ein Problem.

Wenn meine Datei test.test.tar.gz heisst moechte ich test.test.bak haben.

thommy
27-03-2001, 14:23
Den zweiten Fall würde der Ausdruck

<pre>
echo ${var%.*.*}
</pre>

oder - falls die Endung immer tar.gz lautet - einfach

<pre>
echo ${var%.tar.gz}
</pre>

abfangen. Ob sich überhaupt die Parametersubstitution eignet, hängt von den möglichen Dateinamen ab. Wenn Du Probleme hast, dann beschreibe bitte, welche Struktur die Dateienamen haben können.

Thomas

Tosk
27-03-2001, 15:28
ich sags doch: basename()

Tosk

pitu
29-03-2001, 14:52
genau:

tw@toto:~ > basename ICQJava_Preview.tar.gz .gz
ICQJava_Preview.tar
tw@toto:~ > basename ICQJava_Preview.tar.gz gz
ICQJava_Preview.tar.
tw@toto:~ > basename ICQJava_Preview.tar.gz ar.gz
ICQJava_Preview.t

thorsten

------------------
Thorsten Wandersmann
SuSE GmbH, Nuernberg

jean_luc_picard
13-12-2005, 07:51
Naja... basename ist meiner Meinung nach halt nur geeignet, wenn man die Dateieindung auch kennt bzw. sie immer die Gleiche ist. Wenn man aber beliebige Dateiendungen entfernen will, eignet sich sed anscheinend besser:



echo "/path/to/my_file.xyz"|sed -e 's/\.[^\.]*$//'


Die Einschränkung hierbei ist allerdings, dass die Dateiendung .tar.gz nur teilweise entfernt wird. Hier wirst Du nicht drum herumkommen, derartige Dateiendungen speziell zu behandeln...

Romanday
16-12-2005, 03:05
Die Einschränkung hierbei ist allerdings, dass die Dateiendung .tar.gz nur teilweise entfernt wird. Hier wirst Du nicht drum herumkommen, derartige Dateiendungen speziell zu behandeln...

http://www.php.net/manual/en/function.dirname.php

und den Rest mit

http://www.php.net/manual/en/function.strpos.php

behandeln. Danach alles bis zum auftreten des ersten .
löschen. Damit solltest Du alle Kombinationen von
Dateiendungen löschen können.