Cum să extrageți numele de bază al fișierului fără cale și extensie în Bash

Cum Sa Extrageti Numele De Baza Al Fisierului Fara Cale Si Extensie In Bash



Comanda basename este folosită în mod obișnuit în Bash pentru a prelua numele de bază al unui fișier sau director dintr-o cale dată prin eliminarea oricăror componente de director principal. Acest articol va explora cum să extrageți numele de bază al unui fișier fără calea și extensia acestuia folosind bash.

Extrageți numele de bază al fișierului fără cale și extensie în Bash

Pentru a extrage numele de bază al unui fișier fără calea și extensia acestuia, putem folosi comanda de bază în combinație cu caracteristica de înlocuire a parametrilor a bash. Comanda basename returnează ultima componentă a unui nume de cale, care în cazul nostru ar fi numele fișierului cu extensia sa. Cu toate acestea, specificând opțiunea de sufix, putem elimina extensia din numele fișierului, iată un exemplu de cod bash:

#!bin/bash
calea fișierului = / Acasă / aaliyan / bash3.sh
s =$ ( nume de bază $filepath )
ecou ' ${s%.*} '

Scriptul bash de mai sus definește o variabilă numită „ calea fișierului ” și îi atribuie calea fișierului ” /home/aaliyan/bash3.sh „. Scriptul folosește apoi comanda de bază pentru a extrage numele de bază al fișierului din calea fișierului și atribuie rezultatul unei variabile numite „s”.







A doua extindere a parametrului elimină extensia din numele fișierului eliminând cea mai scurtă potrivire posibilă a oricărui număr de caractere urmată de un punct folosind „%.*”. Șirul rezultat, „bash3”, este apoi imprimat pe consolă folosind comanda echo:





O altă modalitate de a extrage numele de bază al unui fișier fără calea și extensia acestuia este prin utilizarea expansiunii parametrilor, care este fără a utiliza comanda numelui de bază, mai jos este exemplul de cod bash care utilizează metoda de extindere a parametrilor pentru a obține numele de bază al unui fișier fără fișier. calea și extensia fișierului:





#!bin/bash
calea fișierului = / Acasă / aaliyan / bash3.sh
s = ${filepath##*/}
ecou ' ${s%.*} '

Acesta este un script bash care definește o variabilă numită „filepath” și îi atribuie valoarea „ /home/aaliyan/bash3.sh „. Scriptul utilizează apoi caracteristica de extindere a parametrilor bash de două ori pentru a extrage numele de bază al fișierului fără calea și extensia acestuia. Mai exact, prima extindere a parametrilor elimină calea de la numele fișierului eliminând cea mai lungă potrivire posibilă a oricărui număr de caractere urmată de o bară oblică folosind „##/”.

Șirul rezultat, „ bash3.sh ” este apoi atribuit unei variabile numite „s”. A doua extindere a parametrului elimină extensia din numele fișierului eliminând cea mai scurtă potrivire posibilă a oricărui număr de caractere urmată de un punct folosind „%.”. Șirul rezultat, „bash3”, este apoi imprimat pe consolă folosind comanda echo:



Concluzie

Extragerea numelui de bază al unui fișier fără calea și extensia acestuia este o sarcină comună în scripting-ul bash. Folosind comanda basename în combinație cu funcțiile de înlocuire a parametrilor și de extindere a parametrilor din bash, putem realiza cu ușurință această sarcină. Acest lucru poate fi util atunci când lucrați cu nume de fișiere în scripturi, de exemplu, când redenumim fișiere sau când efectuați operațiuni pe fișiere cu nume similare.