lange gesucht, aber doch nichst gefunden.
Ich versuche aus
/dirname1/dirname2/dirname3/././letzter_dirname
*nur*
letzter_dirname
zu erhalten, alles andere kann wech.
Klar ist, vom ersten /... bis zum letzte Slash / kann alles weg, so dass
nur letzter_dirname bleibt.
Oder, von rechts kommend bis zum ersten / isolieren, den Rest verwerfen.
Habt ihr einen Vorschlag ?
*Danke*
Oezbilen
Dieses Beispiel kann "basename" oder eine RE der Form: s;.*/;;
> zu erhalten, alles andere kann wech.
>
> Klar ist, vom ersten /... bis zum letzte Slash / kann alles weg, so dass
> nur letzter_dirname bleibt.
>
> Oder, von rechts kommend bis zum ersten / isolieren, den Rest verwerfen.
>
> Habt ihr einen Vorschlag ?
s;/.*/\([^/]*\)/;\1;
Laesst nur den letzten Verzeichnisnamen ueber, schneidet alle
Verzeichnisse vorher und alle Dateinamen hintendran weg.
Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)
manchmal sieht man den Wald nicht, sprich basename. Fuer die Loesung mit
sed bin ich eindeutig bloed. Ich wusste, etwas mit vielen Slashes muss
es sein ;-), aber diese Perfektion in dieser Kuerze, no way jose.
*Danke Euch*
Gruss
Oezbilen
H. D. Oezbilen <teppich...@bigfoot.de> wrote:
> lange gesucht, aber doch nichst gefunden.
Dann hast du wohl an der falschen Stelle gesucht.
> Ich versuche aus
>
> /dirname1/dirname2/dirname3/././letzter_dirname
>
> *nur* letzter_dirname zu erhalten, alles andere kann wech.
Dafuer bietet sich das Kommando "basename" an, denn das wurde fuer solche
Anwendungsfaelle gemacht. Alternativ koennte man einfach aus der Zeichenkette
alles bis einschliesslich dem letzten "/" wegschneiden. Das geht z.B. mit
sed, bei eienr POSIX-Shell IIRC auch mit "Brace-Expansion" ($pfad##*/}:
~ $ pfad=/dirname1/dirname2/dirname3/././letzter_dirname
~ $ basename $pfad
letzter_dirname
~ $ echo ${pfad##*/}
letzter_dirname
> Klar ist, vom ersten /... bis zum letzte Slash / kann alles weg, so dass
> nur letzter_dirname bleibt.
Und warum machst du dann nicht genau das?
> Oder, von rechts kommend bis zum ersten / isolieren, den Rest verwerfen.
> Habt ihr einen Vorschlag ?
Ja, siehe oben.
Tschuess,
Juergen Ilse (jue...@usenet-verwaltung.de)
--
Ein Domainname (auch wenn er Teil einer Mailadresse ist) ist nur ein Name,
nicht mehr und nicht weniger ...
Florian Diesch <die...@spamfence.net> wrote:
>> Ich versuche aus
>>
>> /dirname1/dirname2/dirname3/././letzter_dirname
>>
>> *nur*
>>
>> letzter_dirname
>>
>> zu erhalten, alles andere kann wech.
>
> sed 's:.*/\(.*\):\1:'
Warum mit "Backreferences" arbeiten, wenn man es nicht unbedingt braucht?
sed 's:.*/::'
Wenn man alles "unerwuenschte" wegschneidet, kann das verbleibende doch
nur "erwuenschtes" sein, oder?
;-)
F�r das braucht's weder "basename" noch eine re, das k�nnen die meistens
Shells auch selber:
${pfad##*/}
liefert von $pfad nur den Teil nach dem letzten Slash zur�ck.
LG, Ferry
--
Ing. Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: ferdinand.bolh...@wien.gv.at
> s;/.*/\([^/]*\)/;\1;
>
> Laesst nur den letzten Verzeichnisnamen ueber, schneidet alle
> Verzeichnisse vorher und alle Dateinamen hintendran weg.
Allerdings nur, wenn tatsächlich min. zwei Verzeichnisebenen vorliegen:
--->
~> echo "/etc/hosts" | sed 's;/.*/\([^/]*\)/;\1;'
/etc/hosts
<---
Wenn man von einer beliebigen Eingabe wirklich nur das unterste Verzeichnis
haben will, kommt man mit sed nicht zum Ziel.
Wenn alle Pfadbestandteile existieren:
--->
lastdir ()
{
local PFAD="$1"
test -f "$PFAD" && PFAD="${PFAD%/*}"
test -d "$PFAD" && echo "${PFAD##*/}"
}
<---
Funktioniert für Dateien mit und ohne Verzeichnisse davor und für
beliebige Pfadangaben ohne Datei dahinter.
Leo