Pura tiedostonimi ja laajennus Bashissa

esittely

On monia syitä, miksi saatat haluta purkaa tiedostonimen ja tiedostotunnisteen Bashissa:

  • Tiedoston nimen tai tunnisteen muokkaaminen – Haluat ehkä purkaa tiedostonimen tai tunnisteen, jotta voit muokata sitä, kuten lisätä etuliitettä tai päätettä tiedoston nimeen tai muuttaa tiedostopäätettä.

  • Voit luoda tiedoston ainutlaatuisella nimellä – Haluat ehkä purkaa tiedostonimen ja tunnisteen luodaksesi uuden tiedoston yksilöllisellä nimellä, esimerkiksi lisäämällä aikaleiman tai satunnaisluvun tiedoston nimeen.

  • Tiedoston nimen tai tunnisteen käyttäminen komentosarjassa tai komennossa – Haluat ehkä purkaa tiedostonimen tai tunnisteen, jotta voit käyttää sitä komentosarjan tai komennon argumenttina tai syötteenä, esimerkiksi välittääksesi sen ohjelmalle tai luodaksesi tiedoston, jolla on sama nimi kuin hakemistossa.

  • Tietojen poimiminen tiedoston nimestä tai tarkenteesta – Haluat ehkä purkaa tiedostonimen tai tunnisteen, jotta voit poimia siitä tietoja, kuten päivämäärän tai tiedostotyypin.

Tässä artikkelissa tarkastellaan kolmea yleisintä tapaa, joilla voit purkaa tiedostonimen ja tiedostotunnisteen Bashissa. Tarkastelemme jokaista niistä ja annamme sinulle edut ja haitat, jotta voit tehdä valistuneen päätöksen siitä, mikä lähestymistapa sopii sinulle parhaiten.

Menetelmä 1: perusnimi Komento

- basename -komentoa voidaan käyttää tiedostonimen ja tunnisteen purkamiseen tiedostopolusta:

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

Vaikka tämä menetelmä on melko yksinkertainen ja helppokäyttöinen, emme valitettavasti voi purkaa vain tiedoston nimeä (ilman tunnistetta) ilman jälkikäsittelyä.

Voit myös käyttää dirname komento purkaa hakemistopolun erikseen:

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

Plussat:
  • Helppo käyttää
  • Käsittelee tiedostonimiä, joissa on välilyöntejä, oikein
Miinukset:
  • Purkaa vain tiedostonimen eikä voi purkaa laajennusta erikseen ilman lisäkäsittelyä

Tapa 2: Parametrilaajennuksen käyttäminen

Bash tarjoaa ominaisuuden nimeltä parametrin laajennus, jonka avulla voit poimia muuttujan osia käyttämällä erityistä syntaksia. Voit esimerkiksi käyttää seuraavaa syntaksia poimimaan tiedostonimen ja tunnisteen muuttujaan tallennetusta tiedostopolusta:

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

Voit myös käyttää parametrin laajennusta poimiaksesi laajennuksen erikseen:

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

Plussat:
  • Joustava
  • Voi purkaa sekä tiedostonimen että tunnisteen erikseen,
  • Käsittelee tiedostonimiä, joissa on välilyöntejä, oikein
Miinukset:
  • Vaatii muuttujan tiedostopolun tallentamiseen

Menetelmä 3: awk komento

- awk komento on tehokas tekstinkäsittelytyökalu, jolla voidaan purkaa osia merkkijonosta. Voit esimerkiksi käyttää seuraavaa syntaksia poimimaan tiedostonimen ja tunnisteen tiedostopolusta:

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

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

Voit myös käyttää awk laajennuksen purkaminen erikseen:

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

Plussat:
  • Voimakas
  • Voi purkaa sekä tiedostonimen että tunnisteen erikseen
  • Käsittelee tiedostonimiä, joissa on välilyöntejä, oikein
Miinukset:
  • Syntaksi saattaa olla tuntematon joillekin käyttäjille
  • Edellyttää tiedostopolun putkeamista awk

Yhteenveto

Kaiken kaikkiaan tiedostonimen ja tiedostotunnisteen purkaminen Bashissa voi olla hyödyllinen tekniikka tiedostojen käsittelyssä ja erilaisten tehtävien suorittamisessa Bash-kuoressa.

Jokaisella mainituista menetelmistä on omat etunsa ja haittansa, ja paras valinta riippuu erityistarpeistasi ja mieltymyksistäsi. Usein on hyödyllistä tuntea useita lähestymistapoja, jotta voit valita tilanteeseesi sopivimman.

Aikaleima:

Lisää aiheesta Stackabus