Übergeordnetes Verzeichnis der dritten Ebene finden

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von slackfan, 01.07.2009.

  1. #1 slackfan, 01.07.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Hallo,

    ich stehe gerade ein bisschen auf dem Schlauch bzw. mir fällt nur Grütze ein. Ich suche den Namen des übergeordneten Verzeichnisses in dritter Ebene.

    Beispiel:
    Aus "/dont/give/a/fuck/on/foo.bar" will ich "a" erhalten.

    Mir fällt aber nur das hier ein:
    Code:
    echo $PWD | rev | cut -d"/" -f3 | rev
    Kennt da jemand etwas Eleganteres?


    cu
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 01.07.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    also da faellt mir hoechstens noch dieser aehnlich unschoen anmutende sed Ausdruck ein:

    Code:
    $ foo=/dont/give/a/fuck/about/foo.bar
    $ echo $foo | sed 's$.*/\(.*\)/.*/.*/.*$\1$'
    a
    
    mfg,
    bytepool
     
  4. #3 slackfan, 01.07.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Das ist wenigstens ein bisschen schneller :)

    Danke erstmal.
     
  5. #4 bytepool, 01.07.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    mir ist grad noch was eingefallen, fuer die Leute die awk lieber moegen als sed: ;)
    Code:
    awk -F'/' '{a=NF-3; print $a}'
    
    mfg,
    bytepool
     
  6. #5 floyd62, 01.07.2009
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi,

    Versuch mal
    Code:
    DIR=$(cd ../../..; pwd)
    
    ... sollte das Gewünschte liefern - ohne allzuviele Child-Prozesse anwerfen zu müssen ...

    Gruss
     
  7. #6 slackfan, 01.07.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Das ist leider nicht ganz das, was ich brauchte, da der Befehl "/dont/give/a/" zurückliefert. Die sed und awk Varianten funktionieren gut und hinreichend schnell.

    Danke trotzdem.

    cu
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Fuege man an floyd62's Vorschlag noch ein 'basename $DIR' an, dann bekommst Du den entpsrechenden Namen den Du suchst.
     
  10. #8 slackfan, 01.07.2009
    Zuletzt bearbeitet: 01.07.2009
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Das ist wahr. Werde es nehmen. Sieht am verständlichsten aus und es ist sogar minimal am schnellsten. Bei mir zumindest.

    Code:
    #!/bin/sh
    
    mkdir -p ./dont/give/a/fuck/on/foo/bar
    cd ./dont/give/a/fuck/on/foo/bar
    
    time for i in {1..500}; do basename $(cd ../../..; pwd) > /dev/null; done
    
    time for i in {1..500}; do pwd | awk -F'/' '{a=NF-3; print $a}' > /dev/null; done
    
    time for i in {1..500}; do pwd | sed 's$.*/\(.*\)/.*/.*/.*$\1$' > /dev/null; done
    
    time for i in {1..500}; do pwd | rev | cut -d"/" -f4 | rev > /dev/null; done
    
    liefert
    Code:
    real    0m1.778s
    user    0m0.536s
    sys     0m1.356s
    
    real    0m1.893s
    user    0m0.732s
    sys     0m1.672s
    
    real    0m1.941s
    user    0m0.896s
    sys     0m1.464s
    
    real    0m9.348s
    user    0m12.249s
    sys     0m4.292s
    
     
Thema:

Übergeordnetes Verzeichnis der dritten Ebene finden

Die Seite wird geladen...

Übergeordnetes Verzeichnis der dritten Ebene finden - Ähnliche Themen

  1. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  2. Home Verzeichnis ändern

    Home Verzeichnis ändern: Hallo Wollte nicht, dass mein Sohn (16) in die veschränkte WIN Welt hinein wächst und habe für Ihn Linux Mint auf seinem LAPTOP installiert. Er...
  3. Cryptomator: Transparente Verschlüsselung für Cloud-Verzeichnisse

    Cryptomator: Transparente Verschlüsselung für Cloud-Verzeichnisse: Das freie Programm Cryptomator, dessen Version 1.0 kurz bevorsteht, soll für eine einfache, sichere und transparente Verschlüsselung von...
  4. PHP Skripte werden nur im Verzeichnis des jeweiligen Benutzers ausgeführt

    PHP Skripte werden nur im Verzeichnis des jeweiligen Benutzers ausgeführt: Hallo zusammen, ich bin mit meinen Domains auf einen neuen Webserver umgezogen. Ein Teil meiner Domains lief auf Drupal als...
  5. cd mit Bindestrich im Verzeichnisnamen...?

    cd mit Bindestrich im Verzeichnisnamen...?: kann gelöscht werden