GNU/Linux >> Znalost Linux >  >> Linux

Získejte poslední dirname/filename v argumentu cesty k souboru v Bash

K získání libovolné cesty názvu cesty lze použít následující přístup:

some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))

Výstup:

c
b
a

Bash může získat poslední část cesty, aniž by musel volat externí basename :

dir="/path/to/whatever/"
dir="${dir%/}"             # strip trailing slash (if any)
subdir="${dir##*/}"

To využívá Bashovo rozšíření parametru k odstranění části řetězce před posledním (zbývajícím) lomítkem.


basename odstraní předponu adresáře cesty:

$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example

Chcete-li vytisknout název souboru bez použití externích příkazů,

Spustit:

fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name

Tento příkaz musí běžet rychleji než basename a dirname .


Linux
  1. Získat úplnou cestu ze skriptu Bash?

  2. Extrahujte základní název souboru bez cesty a přípony v bash

  3. Získat mtime konkrétního souboru pomocí Bash?

  1. Jak získat úplnou cestu k souboru?

  2. Přidání časového razítka k názvu souboru s mv v BASH

  3. Vezměte poslední část cesty ke složce v shellu

  1. Jak zahrnout soubor do skriptu bash shell

  2. Jak získat cestu k aktuálnímu souboru (pwd) v Linuxu z C?

  3. Jak získám absolutní adresář souboru v bash?