Læs filnavn uden udvidelse i Bash

Read Filename Without Extension Bash



Linux -brugere skal arbejde med filer regelmæssigt til mange formål. Nogle gange skal brugerne kun læse filnavnet ved at fjerne filtypen. Filnavn og udvidelse kan adskilles og gemmes på forskellige variabler i Linux på flere måder. Bash indbygget kommando og shell-parameterudvidelse kan bruges til at fjerne filtypen. Hvordan filnavnet uden udvidelse kan læses ved hjælp af ovennævnte måder forklares i denne vejledning.

Brug kommandoen 'basename' til at læse filnavn

kommandoen 'basename' bruges til at læse filnavnet uden udvidelse fra en mappe eller filsti.







Syntaks:



basenavnNAVN[SUFFIX]

eller



basenavnMULIGHED ... NAVN ...

Her kan NAME indeholde filnavnet eller filnavnet med fuld sti. SUFFIX er valgfri, og den indeholder den filtypedel, som brugeren vil fjerne. kommandoen 'basename' har nogle muligheder, der er beskrevet nedenfor.





Muligheder

Navn Beskrivelse
-til Det bruges til at videregive flere filnavne med sti eller uden sti som kommandeargumenter.
-s Det bruges til at passere udvidelsen som suffiks, der skal fjernes.
-Med Det bruges til at vise de flere filnavne ved at adskille hver fil med null.
-Hjælp Det bruges til at vise oplysningerne om brug af kommandoen 'basename'.
-version Det bruges til at vise versionsoplysningerne.

Eksempel-1: Brug af NAME og SUFFIX

Følgende kommando `basename` henter filnavnet med udvidelse. SUFFIX udelades fra denne kommando. Her er output 'Product.txt' .



$basenavn /hjem/fahmida/kode/produkt.txt

Hvis du vil hente filnavnet uden udvidelse, skal du angive filtypen som SUFFIX med kommandoen 'basename'. Her er udvidelsen .txt. Kør følgende kommando for at fjerne udvidelsen fra filen.

$basenavn /hjem/fahmida/kode/product.txt .txt

Eksempel-2: Brug af ‘-a’ og NAME

Brugen af ​​'-a' mulighed for 'basename' kommando er vist i dette eksempel. Her sendes to filstier som argumenter med kommandoen 'basename'. Hvert filnavn med udvidelse hentes fra stien og udskrives med ny linje.

$basenavn -til /hjem/fahmida/index.html/hjem/fahmida/kode/emp.txt

Eksempel-3: Brug af ‘-z’ og NAME

'-Z' bruges med kommandoen 'basename' til at udskrive flere filnavne med nullværdi i stedet for ny linje. Følgende kommando bruger to muligheder sammen, '-a' og '-z'. Her to filnavne, index.html og emp.txt udskrives uden mellemrum eller ny linje.

$basenavn -det /hjem/fahmida/index.html/hjem/fahmida/kode/emp.txt

Eksempel-4: Brug af ‘-s’ og NAME

Følgende kommando kan bruges som et alternativ til SUFFIX med 'basename'. Filudvidelse skal passere med ‘-sh’ mulighed for at fjerne filtypen fra filen. Følgende eksempel fjerner udvidelsen ‘-sh’ fra filen ‘addition.sh’.

$basenavn -s.sh tilføjelse.sh

Eksempel-5: Fjern filtypen uden SUFFIX

Hvis du ikke kender filtypen, som du vil fjerne fra filnavnet, hjælper dette eksempel dig med at løse problemet. Opret en fil med navnet read_file.sh med følgende kode for at hente filnavn på enhver udvidelse. 'sed' kommando bruges i dette eksempel til at fjerne enhver form for udvidelse fra filnavnet. Hvis du kører scriptet, vil output være ' gennemsnit 'Efter fjernelse af udvidelsen' py '.

read_file.sh

#!/bin/bash
# Indstil filnavnet med stien
filnavn='/home/fahmida/code/average.py'
# Læs filnavnet uden udvidelse ved at bruge kommandoen 'basname' og 'sed'
smed ud '$ (basenavn '$ filnavn' | sed 's/ (.*) ..*/ 1/')'

Kør scriptet.

$bashread_file.sh

Eksempel-6: Konverter filudvidelse fra txt til docx

Filnavn uden udvidelse skal konvertere filen fra en udvidelse til en anden. Dette eksempel viser, hvordan du kan ændre udvidelsen af ​​alle tekstfiler (.txt) til word -filerne (.docx) ved at bruge kommandoen 'basename' i bash -scriptet. Opret en fil med navnet, convert_file.sh med følgende kode. Her bruges en for-in loop til at læse alle tekstfilerne med .txt udvidelse fra det aktuelle bibliotek. Filnavnet uden udvidelse læses af kommandoen `basename` og omdøbes ved at tilføje .docx -udvidelse i hver iteration af sløjfen.

convert_file.sh

#!/bin/bash
# løkken vil læse hver tekstfil fra det aktuelle bibliotek
tilfilnavni ``ls *.txt``
gøre
# Udskriv tekstfilnavnet før konvertering
smed ud 'Filnavn før konvertering:$ filnavn'
# Skift filtxt -udvidelsen til docx
mv - '$ filnavn' '$ (basisnavn - '$ filnavn' .txt).docx '
Færdig

Kør scriptet.

$bashconvert_file.sh

Kontroller, at tekstfilerne er konverteret eller ej ved hjælp af kommandoen `ls`.

$ls

Eksempel-7: Læs filnavn uden udvidelse ved hjælp af Shell-parameterudvidelse

Shell -parameterudvidelse er en anden måde at læse filnavnet uden udvidelse på bash. Dette eksempel viser brugen af ​​shell -parameterudvidelse. Følgende kommando gemmer filstienavnet i variablen $ filnavn .

$filnavn='/var/usr/temp/myfile.tar.gz'

Den følgende kommando fjerner alle typer udvidelser fra stien og gemmer filstien uden udvidelse i variablen, $ fil1 .

$fil 1='$ {filnavn %%.*}'

Følgende kommando udskriver kun filnavnet fra stien. Her vil output ' min fil '.

$smed ud '$ {file1 ##*/}'

Hvis filnavnet indeholder to udvidelser med to prikker (.), Og du vil læse filnavnet ved at fjerne den sidste filtypenavn, skal du bruge følgende kommando. Kør følgende kommando, der gemmer filstien i variablen, $ file2 ved at fjerne den sidste filtypenavn.

$fil2='$ {filnavn%.*}'

Kør nu følgende kommando for at udskrive filnavnet med en prik (.) Udvidelse. Her vil output være myfile.tar.

$smed ud '$ {file2 ## * /}'

Konklusion

Filnavn uden udvidelse er påkrævet til forskellige formål. Nogle anvendelser af filnavn uden udvidelse forklares i denne vejledning ved hjælp af nogle eksempler, f.eks. Filkonvertering. Denne vejledning hjælper de brugere, der er interesseret i at lære måder at adskille filnavn og filtypenavn fra filstien. To måder forklares her. Brugeren kan kun følge en af ​​disse måder til at udtrække filnavnet fra filstien.