Portál AbcLinuxu, 10. května 2025 08:35
basename
popř. možnosti BASH
e
Basename si, ale neporadí s Windows oddělovačem Jinak řešení pomocí Bashe je např. toto:
$ CESTA_LINUX="/adresar1/adresar2/adresar3/soubor"
$ CESTA_WINDOWS="\adresar1\adresar2\adresar3\soubor"
$ echo ${CESTA_LINUX##*/}
soubor
$ echo ${CESTA_WINDOWS##*\\}
soubor
Podrobnosti viz BASH - III (Proměnné - dokončení).
sed -e 's/^.*[/\\]//'
. Dělá to to, že to veme všechny libovolné znaky (.*) od začátku řádku (^) jež následuje / nebo \ ([/\\]). Jelikož * je v sedu defaultně žravá, nasbírá nejvíce znaků, co jde a tedy i případně "neposlední" výskyty lomítek.
>>> import os >>> cesta = '/home/franta/Desktop/blbost.txt' >>> print os.path.basename(cesta) blbost.txttak i na windows - ty ale nemám, tak to musím trochu obejít:
>>> import ntpath >>> cesta = 'D:\\Documents and Settings\\franta\\Plocha\\blbost.txt' >>> print cesta D:\Documents and Settings\franta\Plocha\blbost.txt >>> print ntpath.basename(cesta) blbost.txt >>>
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.