Anzeige:
Ergebnis 1 bis 9 von 9

Thema: Dateiendung

  1. #1
    Gast

    Question 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!!

  2. #2
    Tosk
    Gast

    Lightbulb

    hi cstux,

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

    Tosk

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.10.1999
    Ort
    Dresden
    Beiträge
    255

    Wink

    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

  4. #4
    Gast

    Post

    Mit var gibt es leider ein Problem.

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

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.10.1999
    Ort
    Dresden
    Beiträge
    255

    Post

    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

  6. #6
    Tosk
    Gast

    Smile

    ich sags doch: basename()

    Tosk

  7. #7
    pitu
    Gast

    Post

    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

  8. #8
    Registrierter Benutzer
    Registriert seit
    30.04.2001
    Beiträge
    89
    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:

    Code:
    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...

  9. #9
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von jean_luc_picard
    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.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •