Citiți numele fișierului fără extensie în Bash

Read Filename Without Extension Bash



Utilizatorii Linux trebuie să lucreze cu fișiere în mod regulat în mai multe scopuri. Uneori, utilizatorii trebuie să citească numele de bază al fișierului numai eliminând extensia de fișier. Numele fișierului și extensia pot fi separate și stocate pe diferite variabile în Linux prin mai multe moduri. Comanda încorporată Bash și extinderea parametrilor shell pot fi utilizate pentru a elimina extensia fișierului. Cum se poate citi numele fișierului fără extensie utilizând modalitățile menționate mai sus sunt explicate în acest tutorial.

Folosind comanda `basename` pentru a citi numele fișierului

Comanda `basename` este utilizată pentru a citi numele fișierului fără extensie dintr-un director sau cale de fișier.







Sintaxă:



nume de bazăNUME[SUFIX]

sau



nume de bazăOPȚIUNE ... NUME ...

Aici, NAME poate conține numele fișierului sau numele fișierului cu calea completă. SUFFIX este opțional și conține partea de extensie de fișier pe care utilizatorul dorește să o elimine. Comanda `basename` are câteva opțiuni care sunt descrise mai jos.





Opțiuni

Nume Descriere
-la Este folosit pentru a trece mai multe nume de fișiere cu cale sau fără cale ca argumente de comandă.
-s Este folosit pentru a trece extensia ca sufix care trebuie eliminat.
-Cu Este folosit pentru a afișa mai multe nume de fișiere separând fiecare fișier cu nul.
-Ajutor Este folosit pentru a afișa informațiile despre utilizarea comenzii `basename`.
-versiune Este folosit pentru a afișa informațiile despre versiune.

Exemplu-1: Utilizarea NAME și SUFFIX

Următoarea comandă `basename` va prelua numele fișierului cu extensie. SUFFIX este omis din această comandă. Aici, ieșirea este „Product.txt” .



$nume de bază /Acasă/fahmida/cod/produs.txt

Dacă doriți să recuperați numele de fișier fără extensie, atunci trebuie să furnizați extensia de fișier ca SUFFIX cu comanda `basename`. Aici, extensia este .txt. Rulați următoarea comandă pentru a elimina extensia din fișier.

$nume de bază /Acasă/fahmida/cod/produs.txt .txt

Exemplu-2: folosind opțiunea „-a” și NAME

Utilizarea opțiunii „-a” a comenzii „nume de bază” este prezentată în acest exemplu. Aici, două căi de fișiere sunt transmise ca argumente cu comanda `basename`. Fiecare nume de fișier cu extensie va fi preluat de pe cale și imprimat prin linie nouă.

$nume de bază -la /Acasă/fahmida/index.html/Acasă/fahmida/cod/emp.txt

Exemplu-3: folosind opțiunea „-z” și NAME

Opțiunea „-z” este utilizată cu comanda „nume de bază” pentru a imprima mai multe nume de fișiere cu valoare nulă în loc de linie nouă. Următoarea comandă folosește împreună două opțiuni, „-a” și „-z”. Aici, două nume de fișiere, index.html și emp.txt va imprima fără spațiu sau linie nouă.

$nume de bază -la /Acasă/fahmida/index.html/Acasă/fahmida/cod/emp.txt

Exemplul-4: folosind opțiunea „-s” și NAME

Următoarea comandă poate fi utilizată ca alternativă a SUFFIX cu „nume de bază”. Extensia de fișier trebuie să treacă cu opțiunea „-sh” pentru a elimina extensia de fișier din fișier. Următorul exemplu va elimina extensia, „-sh” din fișier, „addition.sh”.

$nume de bază -s.sh plus.sh

Exemplu-5: Eliminați extensia de fișier fără SUFFIX

Dacă nu cunoașteți extensia fișierului pe care doriți să îl eliminați din numele fișierului, atunci acest exemplu vă va ajuta să rezolvați problema. Creați un fișier numit read_file.sh cu următorul cod pentru a prelua numele fișierului pentru orice extensie. Comanda `sed` este utilizată în acest exemplu pentru a elimina orice tip de extensie din numele fișierului. Dacă rulați scriptul, rezultatul va fi „ in medie 'După eliminarea extensiei' py '.

read_file.sh

#! / bin / bash
# Setați numele fișierului cu calea
nume de fișier=„/home/fahmida/code/average.py”
# Citiți numele fișierului fără extensie utilizând comanda „bazname” și „sed”
aruncat '$ (nume de bază '$ filename' | sed 's / (. * ) .. * / 1 / ')'

Rulați scriptul.

$bashread_file.sh

Exemplu-6: convertiți extensia de fișier de la txt la docx

Numele de fișier fără extensie trebuie să convertească fișierul de la o extensie la alta. Acest exemplu arată cum puteți schimba extensia tuturor fișierelor text (.txt) în fișierele cuvânt (.docx) utilizând comanda `basename` în scriptul bash. Creați un fișier numit, convert_file.sh cu următorul cod. Aici, o buclă de intrare este utilizată pentru a citi toate fișierele text cu .txt extensie din directorul curent. Numele de fișier fără extensie este citit prin comanda `basename` și redenumit prin adăugarea extensiei .docx în fiecare iterație a buclei.

convert_file.sh

#! / bin / bash
# bucla va citi fiecare fișier text din directorul curent
pentrunume de fișierîn eu sunt *.txt
do
# Imprimați numele fișierului text înainte de conversie
aruncat „Numele fișierului înainte de conversie:$ nume de fișier'
# Schimbați extensia fișierului txt în docx
mv - '$ nume de fișier' '$ (nume de bază - „$ filename” .txt).docx '
Terminat

Rulați scriptul.

$bashconvert_file.sh

Verificați dacă fișierele text sunt sau nu convertite utilizând comanda `ls`.

$eu sunt

Exemplu-7: Citiți numele fișierului fără extensie folosind extinderea parametrului Shell

Extinderea parametrilor Shell este un alt mod de a citi numele fișierului fără extensie în bash. Acest exemplu arată utilizările extinderii parametrilor shell. Următoarea comandă va stoca calea fișierului în variabila, $ nume de fișier .

$nume de fișier=„/var/usr/temp/myfile.tar.gz”

Următoarea comandă va elimina toate tipurile de extensii din cale și va stoca calea fișierului fără extensie în variabilă, $ file1 .

$file1='$ {filename %%. *}'

Următoarea comandă va imprima numele fișierului numai din cale. Aici, rezultatul va „ fisierul meu '.

$aruncat '$ {file1 ## * /}'

Dacă numele fișierului conține două extensii cu două puncte (.) Și doriți să citiți numele fișierului eliminând ultima extensie a fișierului, atunci trebuie să utilizați următoarea comandă. Rulați următoarea comandă care stochează calea fișierului în variabilă, $ file2 prin eliminarea ultimei extensii a fișierului.

$fișier2='$ {filename%. *}'

Acum, executați următoarea comandă pentru a imprima numele fișierului cu o extensie de punct (.). Aici, ieșirea va fi myfile.tar.

$aruncat '$ {file2 ## * /}'

Concluzie

Numele fișierului fără extensie este necesar în diferite scopuri. Unele utilizări ale numelui de fișier fără extensie sunt explicate în acest tutorial prin utilizarea unor exemple, cum ar fi conversia fișierelor. Acest tutorial îi va ajuta pe acei utilizatori interesați să afle modalitățile de a separa numele și extensia fișierului de calea fișierului. Aici sunt explicate două moduri. Utilizatorul poate urma oricare dintre aceste modalități de a extrage numele fișierului numai din calea fișierului.