Hur man extraherar filbasnamn utan sökväg och tillägg i Bash

Hur Man Extraherar Filbasnamn Utan Sokvag Och Tillagg I Bash



Kommandot basename används vanligtvis i Bash för att hämta basnamnet på en fil eller katalog från en given sökväg genom att ta bort alla ledande katalogkomponenter. Den här artikeln kommer att utforska hur man extraherar basnamnet på en fil utan dess sökväg och tillägg med bash.

Extrahera filbasnamn utan sökväg och tillägg i Bash

För att extrahera basnamnet för en fil utan dess sökväg och tillägg, kan vi använda kommandot basename tillsammans med parametersubstitutionsfunktionen i bash. Kommandot basename returnerar den sista komponenten i ett sökvägsnamn, vilket i vårt fall skulle vara filnamnet med dess tillägg. Men genom att ange suffixalternativet kan vi ta bort tillägget från filnamnet, här är ett exempel på bash-kod:

#!bin/bash
sökväg = / Hem / aaliyan / bash3.sh
s =$ ( basnamn $filsökväg )
eko ' ${s%.*} '

Ovanstående bash-skript definierar en variabel som heter ' sökväg ' och tilldelar den sökvägen till filen ' /home/aaliyan/bash3.sh '. Skriptet använder sedan kommandot basename för att extrahera filens basnamn från filsökvägen och tilldelar resultatet till en variabel som heter 's'.







Den andra parameterexpansionen tar bort tillägget från filnamnet genom att ta bort den kortaste möjliga matchningen av valfritt antal tecken följt av en punkt med '%.*'. Den resulterande strängen, 'bash3', skrivs sedan ut till konsolen med hjälp av echo-kommandot:





Ett annat sätt att extrahera basnamnet för en fil utan dess sökväg och filtillägg är genom att använda parameterexpansionen som är utan att använda kommandot basename, nedan är exempelbashkoden som använder parameterexpansionsmetoden för att få basnamnet på en fil utan fil sökväg och filtillägg:





#!bin/bash
sökväg = / Hem / aaliyan / bash3.sh
s = ${filepath##*/}
eko ' ${s%.*} '

Detta är ett bash-skript som definierar en variabel som heter 'filepath' och tilldelar den värdet ' /home/aaliyan/bash3.sh '. Skriptet använder sedan parameterexpansionsfunktionen i bash två gånger för att extrahera filens basnamn utan dess sökväg och tillägg. Specifikt tar den första parameterexpansionen bort sökvägen från filnamnet genom att ta bort den längsta möjliga matchningen av valfritt antal tecken följt av ett snedstreck med '##/'.

Den resulterande strängen, ' bash3.sh ” tilldelas sedan en variabel som heter ”s”. Den andra parameterexpansionen tar bort tillägget från filnamnet genom att ta bort den kortaste möjliga matchningen av valfritt antal tecken följt av en punkt med '%.'. Den resulterande strängen, 'bash3', skrivs sedan ut till konsolen med hjälp av echo-kommandot:



Slutsats

Att extrahera basnamnet för en fil utan dess sökväg och tillägg är en vanlig uppgift i bash-skript. Genom att använda kommandot basename i kombination med parametersubstitution och parameterexpansionsfunktioner i bash kan vi enkelt uppnå denna uppgift. Detta kan vara användbart när du arbetar med filnamn i skript, till exempel när du byter namn på filer eller utför operationer på filer med liknande namn.