Använd kommandot 'basename' för att läsa filnamn
kommandot `basename` används för att läsa filnamnet utan tillägg från en katalog eller sökväg.
Syntax:
basnamnNAMN[ÄNDELSE]
eller
basnamnALTERNATIV ... NAMN ...
Här kan NAME innehålla filnamnet eller filnamnet med hela sökvägen. SUFFIX är valfritt och innehåller den filtilläggsdel som användaren vill ta bort. kommandot `basename` har några alternativ som beskrivs nedan.
alternativ
namn | Beskrivning |
-till | Den används för att skicka flera filnamn med sökväg eller utan sökväg som kommandoargument. |
-s | Det används för att skicka tillägget som suffix som måste tas bort. |
-Med | Den används för att visa flera filnamn genom att separera varje fil med null. |
-hjälp | Den används för att visa informationen om kommandot 'basename'. |
-version | Den används för att visa versionsinformationen. |
Exempel 1: Använda NAME och SUFFIX
Följande kommando 'basename' hämtar filnamnet med tillägget. SUFFIX utelämnas från detta kommando. Här är utgången 'Product.txt' .
$basnamn /Hem/fahmida/koda/product.txt
Om du vill hämta filnamnet utan tillägg måste du ange filtillägget som SUFFIX med kommandot 'basename'. Här är tillägget .txt. Kör följande kommando för att ta bort tillägget från filen.
$basnamn /Hem/fahmida/koda/product.txt .txt
Exempel-2: Använda '-a' alternativet och NAME
Användningen av '-a' alternativet för 'basename' kommando visas i detta exempel. Här skickas två filvägar som argument med kommandot 'basename'. Varje filnamn med tillägg hämtas från sökvägen och skrivs ut med ny rad.
$basnamn -till /Hem/fahmida/index.html/Hem/fahmida/koda/emp.txt
Exempel-3: Använda alternativet ‘-z’ och NAME
'-Z' alternativet används med kommandot 'basename' för att skriva ut flera filnamn med nollvärde istället för ny rad. Följande kommando använder två alternativ tillsammans, '-a' och '-z'. Här två filnamn, index.html och emp.txt kommer att skriva ut utan utrymme eller ny rad.
$basnamn -de /Hem/fahmida/index.html/Hem/fahmida/koda/emp.txt
Exempel-4: Användning av '-s' och NAME
Följande kommando kan användas som ett alternativ till SUFFIX med 'basnamn'. Filtillägget måste passera med alternativet ‘-sh’ för att ta bort filtillägget från filen. Följande exempel tar bort tillägget '-sh' från filen 'addition.sh'.
$basnamn -s.sh tillägg.sh
Exempel-5: Ta bort filtillägg utan SUFFIX
Om du inte känner till filtillägget som du vill ta bort från filnamnet hjälper det här exemplet dig att lösa problemet. Skapa en fil med namnet read_file.sh med följande kod för att hämta filnamn på alla tillägg. 'sed' -kommandot används i detta exempel för att ta bort alla typer av tillägg från filnamnet. Om du kör skriptet kommer utmatningen att vara ' genomsnitt 'Efter att ha tagit bort tillägget' py '.
read_file.sh
#!/bin/bash# Ange filnamn med sökväg
filnamn='/home/fahmida/code/average.py'
# Läs filnamnet utan tillägg med kommandot 'basname' och 'sed'
kastade ut '$ (basnamn '$ filnamn' | sed 's/ (.*) ..*/ 1/')'
Kör skriptet.
$våldsamt slagread_file.sh
Exempel-6: Konvertera filtillägg från txt till docx
Filnamn utan tillägg måste konvertera filen från ett tillägg till ett annat. Detta exempel visar hur du kan ändra tillägget för alla textfiler (.txt) till word -filerna (.docx) med kommandot 'basename' i bash -skriptet. Skapa en fil med namnet, convert_file.sh med följande kod. Här används en in-loop för att läsa alla textfiler med .Text tillägg från den aktuella katalogen. Filnamnet utan tillägg läses av kommandot 'basename' och byter namn genom att lägga till .docx -tillägg i varje iteration av slingan.
convert_file.sh
#!/bin/bash# slingan kommer att läsa varje textfil från den aktuella katalogen
förfilnamni ''ls *.Text''
do
# Skriv ut textfilnamnet före konvertering
kastade ut 'Filnamn före konvertering:$ filnamn'
# Ändra filtillägget för txt till docx
mv - '$ filnamn' '$ (basnamn - '$ filnamn' .txt).docx '
Gjort
Kör skriptet.
$våldsamt slagconvert_file.shKontrollera att textfilerna konverteras eller inte med kommandot `ls '.
$ls
Exempel-7: Läs filnamn utan tillägg med Shell-parameterutvidgning
Shell -parameterutvidgning är ett annat sätt att läsa filnamnet utan tillägg i bash. Detta exempel visar användningen av skalparameterutvidgning. Följande kommando lagrar sökvägsnamnet för filen i variabeln, $ filnamn .
$filnamn='/var/usr/temp/myfile.tar.gz'Följande kommando tar bort alla typer av tillägg från sökvägen och lagrar filvägen utan tillägg i variabeln, $ file1 .
$fil1='$ {filnamn %%.*}'Följande kommando kommer bara att skriva ut filnamnet från sökvägen. Här kommer utmatningen att min fil '.
$kastade ut '$ {file1 ##*/}'Om filnamnet innehåller två tillägg med två punkter (.) Och du vill läsa filnamnet genom att ta bort det sista filtillägget måste du använda följande kommando. Kör följande kommando som lagrar filvägen i variabeln, $file2 genom att ta bort den sista filtillägget.
$file2='$ {filnamn%.*}'Kör nu följande kommando för att skriva ut filnamnet med en punkt (.) Tillägg. Här kommer utgången att vara myfile.tar.
$kastade ut '${file2##*/}'
Slutsats
Filnamn utan tillägg krävs för olika ändamål. Vissa användningsområden för filnamn utan tillägg förklaras i den här självstudien med hjälp av några exempel som filkonvertering. Denna handledning hjälper de användare som är intresserade att lära sig sätten att skilja filnamn och tillägg från filvägen. Två sätt förklaras här. Användaren kan följa något av dessa sätt att extrahera filnamnet endast från filsökvägen.