Ke čtení názvu souboru použijte příkaz `basename`
Příkaz `basename` se používá ke čtení názvu souboru bez přípony z adresáře nebo cesty k souboru.
Syntax:
základní jménoNÁZEV[PŘÍPONA]
nebo
základní jménoMOŽNOST ... NÁZEV ...
Zde NAME může obsahovat název souboru nebo název souboru s úplnou cestou. SUFFIX je volitelný a obsahuje část s příponou souboru, kterou chce uživatel odebrat. Příkaz `basename` má některé možnosti, které jsou popsány níže.
Možnosti
název | Popis |
-na | Používá se k předání více názvů souborů s cestou nebo bez cesty jako argumenty příkazu. |
-s | Používá se k předání rozšíření jako přípony, kterou je třeba odebrat. |
-S | Slouží k zobrazení více názvů souborů oddělením každého souboru hodnotou null. |
-Pomoc | Slouží k zobrazení informací o použití příkazu `basename`. |
-verze | Slouží k zobrazení informací o verzi. |
Příklad 1: Použití NAME a SUFFIX
Následující příkaz `basename` načte název souboru s příponou. SUFFIX je v tomto příkazu vynechán. Zde je výstup „Product.txt“ .
$základní jméno /Domov/fahmida/kód/product.txt
Pokud chcete načíst název souboru bez přípony, musíte zadat příponu souboru jako SUFFIX s příkazem `basename`. Zde je přípona .txt. Spuštěním následujícího příkazu odeberete příponu ze souboru.
$základní jméno /Domov/fahmida/kód/product.txt .txt
Příklad 2: Použití volby „-a“ a NAME
V tomto příkladu je ukázáno použití volby '-a' příkazu `basename`. Zde jsou jako argumenty s příkazem `basename` předány dvě cesty k souboru. Každý název souboru s příponou se načte z cesty a vytiskne pomocí nového řádku.
$základní jméno -na /Domov/fahmida/index.html/Domov/fahmida/kód/emp.txt
Příklad 3: Použití možnosti „-z“ a NAME
Možnost -z se používá s příkazem `basename` k tisku více názvů souborů s hodnotou null místo nového řádku. Následující příkaz používá dvě možnosti dohromady, ‘-a’ a ‘-z’. Zde dva názvy souborů, index.html a emp.txt vytiskne bez mezery nebo nového řádku.
$základní jméno -ten /Domov/fahmida/index.html/Domov/fahmida/kód/emp.txt
Příklad-4: Použití volby „-s“ a NAME
Následující příkaz lze použít jako alternativu SUFFIX s `basename`. Chcete-li příponu souboru odebrat ze souboru, musí projít přípona „-sh“. Následující příklad odebere příponu „-sh“ ze souboru, „addition.sh“.
$základní jméno -s.sh navíc.sh
Příklad-5: Odeberte příponu souboru bez SUFFIX
Pokud neznáte příponu souboru, který chcete z názvu souboru odstranit, pak vám tento příklad pomůže problém vyřešit. Vytvořte soubor s názvem read_file.sh s následujícím kódem k načtení názvu souboru jakékoli přípony. Příkaz `sed` se v tomto příkladu používá k odstranění jakéhokoli typu přípony z názvu souboru. Pokud spustíte skript, výstup bude „ průměrný „Po odstranění rozšíření“ py '.
read_file.sh
#!/bin/bash# Nastavte název souboru s cestou
název souboru='/home/fahmida/code/average.py'
# Přečtěte si název souboru bez přípony pomocí příkazů „basname“ a „sed“
vyhodil '$ (basename '$ filename' | sed 's/ (.*) ..*/ 1/')'
Spusťte skript.
$bashread_file.sh
Příklad-6: Převod přípony souboru z txt na docx
Název souboru bez přípony musí převést soubor z jedné přípony na jinou. Tento příklad ukazuje, že pomocí příkazu `basename` ve skriptu bash můžete změnit příponu všech textových souborů (.txt) na soubory slov (.docx). Vytvořte soubor s názvem, convert_file.sh s následujícím kódem. Zde se smyčka pro vstup používá ke čtení všech textových souborů pomocí .txt rozšíření z aktuálního adresáře. Název souboru bez přípony se čte příkazem `basename` a přejmenuje se přidáním přípony .docx v každé iteraci smyčky.
convert_file.sh
#!/bin/bash# smyčka přečte každý textový soubor z aktuálního adresáře
pronázev souboruv ``ls *.txt``
dělat
# Před převodem vytiskněte textový název souboru
vyhodil „Název souboru před převodem:$ název_souboru'
# Změňte příponu souboru txt na docx
mv - '$ název_souboru' '$ (basename - '$ filename' .txt).docx '
Hotovo
Spusťte skript.
$bashconvert_file.shPomocí příkazu `ls` zkontrolujte, zda jsou textové soubory převedeny nebo ne.
$ls
Příklad-7: Čtení názvu souboru bez přípony pomocí rozšíření parametru Shell
Rozšíření parametrů prostředí je další způsob, jak v bash číst název souboru bez přípony. Tento příklad ukazuje použití rozšíření parametrů shellu. Následující příkaz uloží cestu k souboru do proměnné $ název souboru .
$název souboru='/var/usr/temp/myfile.tar.gz'Následující příkaz odebere z cesty všechny typy přípon a uloží cestu souboru bez přípony do proměnné, $ soubor1 .
$soubor 1='$ {název souboru %%.*}'Následující příkaz vytiskne název souboru pouze z cesty. Zde bude výstup „ můj soubor '.
$vyhodil '$ {file1 ##*/}'Pokud název souboru obsahuje dvě přípony se dvěma tečkami (.) A chcete název souboru přečíst odstraněním poslední přípony souboru, musíte použít následující příkaz. Spusťte následující příkaz, který uloží cestu k souboru do proměnné, $ soubor2 odstraněním poslední přípony souboru.
$soubor2='$ {název souboru%.*}'Nyní spusťte následující příkaz a vytiskněte název souboru s příponou s jednou tečkou (.). Zde bude výstup myfile.tar.
$vyhodil '$ {file2 ## * /}'
Závěr
Název souboru bez přípony je vyžadován pro různé účely. Některá použití názvu souboru bez přípony jsou v tomto kurzu vysvětlena pomocí několika příkladů, jako je například převod souboru. Tento tutoriál pomůže uživatelům, kteří mají zájem, naučit se způsoby, jak oddělit název souboru a příponu od cesty k souboru. Zde jsou vysvětleny dva způsoby. Uživatel může libovolným z těchto způsobů extrahovat název souboru pouze z cesty k souboru.