Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiendung
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
hi cstux,
die funktion basename() ist genau das, was Du suchst... man basename zeigt Dir auch, wie Du sie einsetzt.
Tosk
Vielleicht mein er auch so etwas:
<pre>
user> var=blabla.txt
user> echo $var
blabla.txt
user> echo ${var%.*}
blabla
user> echo ${var%.*}.bak
blabla.bak
</pre>
Thomas
Mit var gibt es leider ein Problem.
Wenn meine Datei test.test.tar.gz heisst moechte ich test.test.bak haben.
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
ich sags doch: basename()
Tosk
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.