Extrageți numele și extensia fișierului în Bash

Introducere

Există multe motive pentru care ați putea dori să extrageți numele și extensia unui fișier în Bash:

  • Pentru a manipula numele sau extensia fișierului – Poate doriți să extrageți numele fișierului sau extensia pentru a o modifica, cum ar fi adăugarea unui prefix sau sufix la numele fișierului sau schimbarea extensiei fișierului.

  • Pentru a crea un fișier cu un nume unic – Este posibil să doriți să extrageți numele și extensia fișierului pentru a crea un fișier nou cu un nume unic, cum ar fi prin adăugarea unui marcaj de timp sau a unui număr aleatoriu la numele fișierului.

  • Pentru a utiliza numele sau extensia fișierului într-un script sau comandă – Poate doriți să extrageți numele fișierului sau extensia pentru a le utiliza ca argument sau intrare pentru un script sau comandă, cum ar fi pentru a le transmite unui program sau pentru a crea un fișier cu același nume ca un director.

  • Pentru a extrage informații din numele sau extensia fișierului – Poate doriți să extrageți numele sau extensia fișierului pentru a extrage informații din acesta, cum ar fi data sau tipul fișierului.

În acest articol, vom arunca o privire asupra celor mai comune trei moduri prin care puteți extrage numele și extensia fișierului în Bash. Vom arunca o privire la fiecare dintre ele și vă vom oferi argumentele pro și contra, astfel încât să puteți lua o decizie educată cu privire la abordarea care vi se potrivește cel mai bine.

Metoda 1: Utilizarea nume de bază Comandă

basename comanda poate fi folosită pentru a extrage numele și extensia fișierului dintr-o cale de fișier:

filename=$(basename /path/to/file.txt)
echo $filename

Deși această metodă este destul de simplă și ușor de utilizat, din păcate, nu există nicio modalitate de a extrage doar numele fișierului (fără extensie) fără nicio postprocesare.

Puteți folosi, de asemenea, dirname comandă pentru a extrage calea directorului separat:

directory=$(dirname /path/to/file.txt)
echo $directory

Pro-uri:
  • Simplu de utilizat
  • Gestionează corect numele fișierelor cu spații
Contra:
  • Extrage doar numele fișierului și nu poate extrage extensia separat fără procesare suplimentară

Metoda 2: Utilizarea expansiunii parametrilor

Bash oferă o caracteristică numită extinderea parametrilor, care vă permite să extrageți părți ale unei variabile folosind o sintaxă specială. De exemplu, puteți utiliza următoarea sintaxă pentru a extrage numele și extensia fișierului dintr-o cale de fișier stocată într-o variabilă:

filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename

De asemenea, puteți utiliza extinderea parametrilor pentru a extrage extensia separat:

extension=${filename##*.}
echo $extension

Pro-uri:
  • Flexibil
  • Poate extrage separat atât numele fișierului, cât și extensia,
  • Gestionează corect numele fișierelor cu spații
Contra:
  • Necesită o variabilă pentru a stoca calea fișierului

Metoda 3: Utilizarea Wow comandă

awk comanda este un instrument puternic de procesare a textului care poate fi folosit pentru a extrage părți dintr-un șir. De exemplu, puteți utiliza următoarea sintaxă pentru a extrage numele și extensia fișierului dintr-o cale de fișier:

filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename

Consultați ghidul nostru practic și practic pentru a învăța Git, cu cele mai bune practici, standarde acceptate de industrie și fisa de cheat incluse. Opriți căutarea pe Google a comenzilor Git și de fapt învăţa aceasta!

De asemenea, puteți utiliza awk pentru a extrage extensia separat:

extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension

Pro-uri:
  • Puternic
  • Poate extrage separat atât numele fișierului, cât și extensia
  • Gestionează corect numele fișierelor cu spații
Contra:
  • Sintaxa poate fi necunoscută unor utilizatori
  • Necesită trecerea căii fișierului awk

Concluzie

În general, extragerea numelui de fișier și a extensiei unui fișier în Bash poate fi o tehnică utilă pentru lucrul cu fișiere și pentru efectuarea diferitelor sarcini în shell-ul Bash.

Fiecare dintre metodele menționate are propriile sale avantaje și dezavantaje, iar cea mai bună alegere va depinde de nevoile și preferințele dumneavoastră specifice. Este adesea util să fii familiarizat cu mai multe abordări, astfel încât să o poți alege pe cea mai potrivită pentru situația ta.

Timestamp-ul:

Mai mult de la Stackabuse