basename
je nástroj příkazového řádku, který odstraňuje adresář a koncovou příponu z daných názvů souborů.
Použití basename
Příkaz #
basename
příkaz podporuje dva formáty syntaxe:
basename NAME [SUFFIX]
basename OPTION... NAME...
basename
vezme název souboru a vytiskne poslední složku názvu souboru. Volitelně může také odstranit jakoukoli koncovou příponu. Je to jednoduchý příkaz, který přijímá pouze několik možností.
Nejzákladnějším příkladem je tisk názvu souboru s odstraněnými hlavními adresáři:
basename /etc/passwd
Výstup bude obsahovat název souboru:
passwd
basename
příkaz odstraní všechny koncové /
znaky:
basename /usr/local/
basename /usr/local
Oba příkazy vytvoří stejný výstup:
local
local
Ve výchozím nastavení končí každý výstupní řádek znakem nového řádku. Pro ukončení řádků NUL
, použijte -z
(--zero
).
Více vstupů #
basename
příkaz může přijmout více jmen jako argumenty. Chcete-li tak učinit, vyvolejte příkaz s -a
(--multiple
) a poté seznam souborů oddělených mezerou.
Chcete-li například získat názvy souborů /etc/passwd
a /etc/shadow
běželi byste:
basename -a /etc/passwd /etc/shadow
passwd
shadow
Odebrání koncové přípony #
Chcete-li z názvu souboru odstranit jakoukoli koncovou příponu, předejte příponu jako druhý argument:
basename /etc/hostname name
host
Obecně se tato funkce používá k odstranění přípon souborů:
basename /etc/sysctl.conf .conf
sysctl
Dalším způsobem, jak odstranit koncovou příponu, je zadat příponu pomocí -s
(--suffix=SUFFIX
) možnost:
basename -s .conf /etc/sysctl.conf
sysctl
Tento formulář syntaxe vám umožňuje odstranit jakoukoli koncovou příponu z více jmen:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl
sudo
Příklad #
Následující příklad ukazuje, jak použít basename
příkaz uvnitř bash for
loop pro přejmenování všech souborů odesílaných na „.jpeg“ v aktuálním adresáři nahrazením přípony souboru z „.jpeg“ na „.jpg“:
for file in *.jpeg; do
mv -- "$file" "$(basename $file .jpeg).jpg"
done
Pokud jako svůj shell používáte bash, místo vyvolání basename
, můžete použít protažení koncového rozšíření pomocí Shell Parameter Expansion.
Závěr č.
basename
příkaz odstraní z názvu jakýkoli úvodní adresář a koncovou příponu.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.